A - X-Plosives (UVALive - 3644)
阿新 • • 發佈:2018-02-15
iostream max 並且 eof bsp true using i++ return
- 題目大意
有若幹個由兩種元素組成的簡單化合物,現在把它們裝進車裏,如果車上有恰好有k種簡單化合物並且恰好有k種元素的話,那麽就會引發爆炸,所以車上的化合物必須避免滿足這個條件。
- 解題思路
如果元素表示點,那麽化合物就表示邊,要爆炸的條件就是形成環,即為k個點k條邊,那麽就肯定存在環。直接用並查集判斷就好了。
- 代碼
#include<iostream> #include<cstdio> using namespace std; const int MAX = 1e5 + 50; int fa[MAX]; void init(int n) { for (int i = 0; i <= n; i++) fa[i] = i; } int find(int x) { if (x == fa[x]) return x; else { return fa[x] = find(fa[x]); } } int main() { int x, y; while (scanf("%d", &x) != EOF) { init(MAX); int sum = 0; while (x != -1) { scanf("%d", &y); int fx = find(x), fy = find(y); if (fx == fy) sum++; else { fa[fx] = fy; } scanf("%d", &x); } printf("%d\n", sum); } return 0; }
A - X-Plosives (UVALive - 3644)