无向图的欧拉回路。
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1010;
int de[maxn];
int p[maxn+1];
int n, m;
void init()
{
for(int i = 1; i <= maxn; i++) p[i] = i;
memset(de, 0, sizeof(de));
}
int find(int x)
{
return x == p[x]? x : p[x] = find(p[x]);
}
void Union(int a, int b)
{
int x = find(a), y = find(b);
if(x != y) p[x] = y;
}
int check()
{
int scnt = 0;
for(int i = 1; i <= n; i++) if(p[i] == i) scnt++;
for(int i = 1; i <= n; i++)
{
if(de[i] & 1) return 0;
}
return scnt == 1;
}
int read_case()
{
scanf("%d", &n);
if(!n) return 0;
scanf("%d", &m);
init();
while(m--)
{
int u, v;
scanf("%d%d", &u, &v);
de[u]++, de[v]++;
Union(u, v);
}
return 1;
}
void solve()
{
if(check()) printf("1\n");
else printf("0\n");
}
int main()
{
while(read_case())
{
solve();
}
return 0;
}