hdu 1878
有这么几点
1无向图各点度数为偶数
2用bfs搜一遍,还有没搜到的点,就非欧拉回路
代码(我开110的数组RE,开成1010就AC)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;
const int maxn = 100 + 10;
int N,M;
int vis[maxn],in[maxn],g[maxn][maxn];
bool judge(){
for(int i=1;i<=N;i++){
if(in[i]&1)return false;
}
return true;
}
bool bfs(int s){
queue<int>qq;
qq.push(s);
vis[s]=1;
while(!qq.empty()){
int tmp=qq.front();
qq.pop();
for(int i=1;i<=N;i++){
if(g[tmp][i]&&!vis[i]){
vis[i]=1;
qq.push(i);
}
}
}
for(int i=1;i<=N;i++)if(!vis[i])return false;
return true;
}
void ori(){
memset(vis,0,sizeof(vis));
memset(in,0,sizeof(in));
memset(g,0,sizeof(g));
}
int main(){
while(~scanf("%d%d",&N,&M)){
if(N==0)break;
ori();
for(int i=1;i<=M;i++){
int a,b;
scanf("%d%d",&a,&b);
in[a]++,in[b]++;
g[a][b]=g[b][a]=1;
}
if(!judge())puts("0");
else if(bfs(1))puts("1");
else puts("0");
}
return 0;
}