【一本通提高篇欧拉回路】欧拉回路1

发布时间 2023-12-26 20:06:07作者: BadBadBad__AK

题目

image
传送门

思路:

\(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;
}