#include <iostream>
#include <vector>
using namespace std;
int n;
void dfs(int start,vector <vector <int> > &juzhen,vector <int> &vis)
{
vis[start]=1;
for(int j=1;j<=n;j++) {
if(vis[j]==0&&juzhen[start][j]!=0) {//如果节点没有被访问过,并且两点之间存在边
dfs(j,juzhen,vis);
}
}
}
int main()
{
int m,x,y,num=0;
cout<<"请输入节点个数:";
cin>>n;
cout<<"请输入边的个数:";
cin>>m;
vector <vector <int> > juzhen(n+1,vector <int> (n+1,0));
vector <int> vis(n+1,0);
for(int i=1;i<=m;i++) {
cin>>x>>y;
juzhen[x][y]=juzhen[y][x]=1;
}
dfs(1,juzhen,vis);
for(int i=1;i<=n;i++) {
if(vis[i]==0) {//说明该图不是连通图,所以直接输出0返回
cout<<0<<endl;
return 0;
}
}
for(int i=1;i<=n;i++) {
num=0;//num用来判断每个节点的度是否为偶数
for(int j=1;j<=n;j++) {
if(juzhen[i][j]==1) num++;
}
if(num%2!=0) {//不是偶数,就输出0返回
cout<<0<<endl;
return 0;
}
}
cout<<1<<endl;
return 0;
}
七桥问题,判断图中是否存在欧拉回路
最新推荐文章于 2021-06-22 20:13:31 发布