1126 Eulerian Path (25 分)难度: 一般 / 欧拉图的判定
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1126 Eulerian Path (25 分)难度: 一般 / 欧拉图的判定相关的知识,希望对你有一定的参考价值。
https://pintia.cn/problem-sets/994805342720868352/problems/994805349851185152
先判断图是否是联通的,可以用并查集,如果连通块的个数为1,那么就是联通的。
剩下的根据题意判断度数即可。
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int d[N],p[N],n,m;
int cnt;
int find(int x)
if(x!=p[x]) p[x]=find(p[x]);
return p[x];
int main(void)
cin>>n>>m;
int s=n;
for(int i=1;i<=n;i++) p[i]=i;
for(int i=0;i<m;i++)
int a,b; cin>>a>>b;
d[a]++,d[b]++;
if(find(a)!=find(b)) p[find(a)]=find(b),s--;
for(int i=1;i<=n;i++)
cout<<d[i];
if(i!=n) cout<<" ";
if(d[i]%2) cnt++;
cout<<endl;
if(!cnt&&s==1) puts("Eulerian");
else if(cnt==2&&s==1) puts("Semi-Eulerian");
else puts("Non-Eulerian");
return 0;
以上是关于1126 Eulerian Path (25 分)难度: 一般 / 欧拉图的判定的主要内容,如果未能解决你的问题,请参考以下文章
1126 Eulerian Path (25 分)难度: 一般 / 欧拉图的判定