判是否是歐拉迴路,方法:先判連通性,再判度數是否全是偶數
#include <map>#include <set>#include <list>#include <queue>#include <deque>#include <stack>#include <string>#include <time.h>#include <cstdio>#include <math.h>#include <iomanip>#include <cstdlib>#include <limits.h>#include <string.h>#include <iostream>#include <fstream>#include <algorithm>using namespace std;#define LL long long#define MIN INT_MIN#define MAX INT_MAX#define pii pair<int ,int>#define mp make_pair#define PI acos(-1.0)#define FRE freopen("input.txt","r",stdin)#define FF freopen("output.txt","w",stdout)#define N 1005vector<int> v[N];bool vis[N];int cnt;int du[N];void dfs(int x) { int i,j; vis[x] = 1; for (i = 0 ; i < v[x].size(); i++) { int y = v[x][i]; if (!vis[y]) { vis[y] = 1; cnt++; dfs(y); } }}int main(){ int n,m; while(scanf("%d%d",&n,&m) && n) { int i,j; for (i = 0 ; i <= n; i++) { v[i].clear(); vis[i] = 0; du[i] = 0; } while(m--) { int x,y; scanf("%d%d",&x,&y); v[x].push_back(y); v[y].push_back(x); du[x]++; du[y]++; } cnt = 1; dfs(1); if (cnt == n) { bool ok = 1; for (i = 1; i <= n; i++) { if (!du[i] || (du[i]&1)) { ok = 0; break; } } if (ok) { printf("1\n"); } else printf("0\n"); } else printf("0\n"); } return 0;}