判断图的连通性+一笔画问题(NYOJ 42 一笔画问题)
2014-11-24 23:26
405 查看
我感觉判断图的连通性可以用BFS,也可以用DFS,但是感觉DFS快些(没试过BFS),所以只写了DFS。。
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<time.h>
using namespace std;
int s[1100][1100],v[1100],c[1100];//s表示图的连线情况,v表示点是否可联通,c表示点的度
int ans,q,p,sum;
void dfs(int d)
{
if(sum==p)
{
ans=1;
}
else
{
int i;
for(i=1;i<=p;i++)
{
if(s[d][i]==0&&v[i]==0)
{
v[i]=1;
sum++;
dfs(i);
}
}
}
}
int main()
{
int t,i,j,a,b,ou,ji;
cin>>t;
while(t--)
{
cin>>p>>q;
memset(s,-1,sizeof(s));
memset(c,0,sizeof(c));
for(i=0;i<q;i++)
{
scanf("%d%d",&a,&b);
c[a]++;
c[b]++;
s[a][b]=0;
s[b][a]=0;
}
ans=0;
sum=1;
memset(v,0,sizeof(v));
v[1]=1;
dfs(1);
if(ans==0)
{
cout<<"No"<<endl;
}
else
{
ou=ji=0;//判断是否可以一笔画:点的度全是偶数或者奇数度的点只有两个就行,其他都不行(有偶数个奇点除以2可以算出需要几画)
for(i=1;i<=p;i++)
{
if(c[i]%2==0)
{
ou++;
}
else
{
ji++;
}
}
if(ji==0||ji==2)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
}
return 0;
}
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<time.h>
using namespace std;
int s[1100][1100],v[1100],c[1100];//s表示图的连线情况,v表示点是否可联通,c表示点的度
int ans,q,p,sum;
void dfs(int d)
{
if(sum==p)
{
ans=1;
}
else
{
int i;
for(i=1;i<=p;i++)
{
if(s[d][i]==0&&v[i]==0)
{
v[i]=1;
sum++;
dfs(i);
}
}
}
}
int main()
{
int t,i,j,a,b,ou,ji;
cin>>t;
while(t--)
{
cin>>p>>q;
memset(s,-1,sizeof(s));
memset(c,0,sizeof(c));
for(i=0;i<q;i++)
{
scanf("%d%d",&a,&b);
c[a]++;
c[b]++;
s[a][b]=0;
s[b][a]=0;
}
ans=0;
sum=1;
memset(v,0,sizeof(v));
v[1]=1;
dfs(1);
if(ans==0)
{
cout<<"No"<<endl;
}
else
{
ou=ji=0;//判断是否可以一笔画:点的度全是偶数或者奇数度的点只有两个就行,其他都不行(有偶数个奇点除以2可以算出需要几画)
for(i=1;i<=p;i++)
{
if(c[i]%2==0)
{
ou++;
}
else
{
ji++;
}
}
if(ji==0||ji==2)
{
cout<<"Yes"<<endl;
}
else
{
cout<<"No"<<endl;
}
}
}
return 0;
}
相关文章推荐
- nyoj 42 一笔画问题 dfs或并查集判断连通
- NYOJ 42-一笔画问题(判断欧拉回路)
- NYOJ42-一笔画问题
- NYOJ 42 一笔画问题
- NYOJ 42-一笔画问题:欧拉路径
- nyoj 42 一笔画问题 (搜索+队列)
- NYOJ42 一笔画问题
- NYOJ-42 一笔画问题
- NYOJ 42 一笔画问题 http://acm.nyist.net/JudgeOnline/problem.php?pid=42
- nyoj_42_一笔画问题_201403181935
- NYOJ 42-一笔画问题:欧拉路径
- nyoj,42,一笔画问题
- NYOJ 42 一笔画问题
- NYOJ42-一笔画问题
- NYOJ-42 一笔画问题(图论,深搜)
- 欧拉路/回路_并查集 NYOJ 42 一笔画问题
- NYOJ-42 一笔画问题
- NYOJ-42 一笔画问题
- NYOJ 42 一笔画问题
- NYOJ42 一笔画问题