对于无向图存在欧拉回路的两个条件: 1)所有的度为偶数 2)连通图 对于有向图: 1)所有的顶点入度等于出度 2)连通图 代码如下:
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1005;
vector<int>G[maxn];
int vis[maxn];
void dfs(int t){
vis[t] = 1;
for(int i = 0;i<G[t].size();i++){
if(!vis[G[t]])dfs(G[t]);
}
}
int main(){
int n,m;
while(cin>>n&&n){
cin>>m;
for(int i = 0;i<n;i++)G.clear();
memset(vis,0,sizeof(vis));
for(int i = 0;i<m;i++){
int a,b;
cin>>a>>b;
a--,b--;
G[a].push_back(b);
G.push_back(a);
}
int yn = -1;
for(int i = 0;i<n;i++){
int len = G.size();
if(len%2)yn++;
if(!vis){dfs(i);yn+=1;}
}
if(yn == 0)cout<<1<<endl;
else cout<<0<<endl;
}
}
|
|