题意
对于无向图来说:
- 是欧拉图,连通且所有节点的度为偶数
- 是半欧拉图,连通且只有两个节点的度为奇数
👉欧拉图👈
code
#include <bits/stdc++.h>
using namespace std;
vector<int> g[510],d(510,0);
bool vis[510];
int n,m,u,v,sum=0,cnt=0;
void dfs(int st){
sum++;
vis[st]=true;
for(int i=0;i<g[st].size();i++) if(!vis[g[st][i]]) dfs(g[st][i]);
}
int main(){
cin>>n>>m;
while(m--){
cin>>u>>v;
g[u].push_back(v);
g[v].push_back(u);
d[u]++;d[v]++;
}
for(int i=1;i<=n;i++) {
if(d[i]%2) cnt++;
i!=1?cout<<' '<<d[i]:cout<<d[i];
}
dfs(1);
if(sum==n&&cnt==0) cout<<endl<<"Eulerian"<<endl;
else if(sum==n&&cnt==2) cout<<endl<<"Semi-Eulerian"<<endl;
else cout<<endl<<"Non-Eulerian"<<endl;
return 0;
}