nyist 42一笔画(欧拉通路)

来源:互联网 发布:tensorflow 32bit 编辑:程序博客网 时间:2024/06/03 15:58
1.首先要保证图连通,那么图中奇度数的点必须是0个或者2个,此外还要判读是否可以连通。
#include <iostream>using namespace std;int n,m;int du[1005],father[1005],sum[1005];int find(int x){if(x!=father[x]) return father[x]=find(father[x]);return x;}void lianjie(int x,int y){int a=find(x),b=find(y);if(a!=b){father[a]=b;sum[b]+=sum[a];}}int main(int argc, char *argv[]){int t,i,j,x,y,jdu;cin>>t;while(t--){cin>>n>>m;for(i=0;i<=n;i++){father[i]=i; sum[i]=1; du[i]=0;}for(i=0;i<m;i++){cin>>x>>y;du[x]++;du[y]++;lianjie(x,y);}jdu=0;//统计奇度数的点for(x=i=1;i<=n;i++){if(du[i]%2) jdu++;else  x=i; }if((jdu==0||jdu==2)&&sum[find(x)]==n) cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;}

原创粉丝点击