1619. 欧拉路径 - AcWing题库
#include<bits/stdc++.h>
using namespace std;
const int N=510;
int g[N][N];
bool st[N];
int d[N];
int n,m;
int dfs(int u)
{
st[u]=true;
int res=1;
for(int i=1;i<=n;i++)
{
if(!st[i]&&g[u][i])
res+=dfs(i);
}
return res;
}
int main()
{
cin>>n>>m;
while(m--)
{
int a,b;cin>>a>>b;
g[a][b]++,g[b][a]++;
d[a]++,d[b]++;
}
int cnt=dfs(1);
cout<<d[1];
for(int i=2;i<=n;i++)cout<<' '<<d[i];
cout<<endl;
if(cnt==n)
{
int s=0;
for(int i=1;i<=n;i++)
{
if(d[i]%2)
s++;
}
if(s==0)
cout<<"Eulerian"<<endl;
else if(s==2)
cout<<"Semi-Eulerian"<<endl;
else cout<<"Non-Eulerian"<<endl;
}
else cout<<"Non-Eulerian"<<endl;
return 0;
}
