HDU 1878 無向圖判定歐拉回路[模板題]
阿新 • • 發佈:2022-04-07
定理:無向圖 \(G\) 具有一條歐拉回路,當且僅當 \(G\) 是連通的,並且所有結點度數為偶數。
思路:不需要建圖。並查集統計無向圖中連通塊的個數,開一個數組統計每個點的度數。
#include <bits/stdc++.h> using namespace std; const int N = 1010; int n, m; int p[N]; int d[N]; int find(int x) { if (p[x] != x) p[x] = find(p[x]); return p[x]; } int main() { while (~scanf("%d%d", &n, &m) && n) { memset(d, 0, sizeof d); for (int i = 1; i <= n; i++) p[i] = i; while (m--) { int a, b; scanf("%d%d", &a, &b); d[a]++, d[b]++; p[find(a)] = find(b); } int cnt = 0; for (int i = 1; i <= n; i++) if (p[i] == i) cnt++; int num = 0; for (int i = 1; i <= n; i++) if (d[i] & 1) num++; if (cnt == 1 && num == 0) puts("1"); // 連通並且沒有奇度點 else puts("0"); } return 0; }