【一本通提高篇欧拉回路】欧拉回路1 题解
题目
思路:
\(dfs\)秒了!
Code
#include <iostream>
#include <cstring>
using namespace std;
const int maxn=1005;
int visit[maxn],d[maxn][maxn],degree[maxn];
int n,m;
void dfs(int s) //判断图是否联通
{
visit[s]=1;
for(int i=1;i<=n;i++)
{
if(d[s][i]&&!visit[i])
dfs(i);
}
}
int main()
{
ios::sync_with_stdio(false);
while(cin>>n&&n)
{
memset(visit,0,sizeof(visit));
memset(d,0,sizeof(d));
memset(degree,0,sizeof(degree));
cin>>m;
int a,b;
for(int i=0;i<m;i++)
{
cin>>a>>b;
d[a][b]=d[b][a]=1;
degree[a]++;
degree[b]++;
}
dfs(1);
bool flag=true;
for(int i=1;i<=n;i++)
{
if(!visit[i])
flag=false;
if(degree[i]%2!=0)
flag=false;
}
if(flag)
cout<<"1"<<endl;
else
cout<<"0"<<endl;
}
return 0;
}