1 条题解
-
0
#include <iostream>
using namespace std; int ans , n, k, x, y, op, fa[3000100]; int find(int u) { if (fa[u] == u) { return u; } return fa[u] = find(fa[u]); } int main(){ cin >> n >> k; for (int i = 1; i <= n * 3; i++) fa[i] = i; while (k--) { cin >> op >> x >> y; if (x > n || y > n) { ans++; continue; } if (op == 1) { if(find(x + n) == find(y) || find(x) == find(y + n)) ans++; else{ fa[find(x)] = find(y); fa[find(x + n )] = find(y + n); fa[find(x + n + n)] = find(y + n + n);
} }else if(op == 2){ if (find(x) == find(y) || find(x) == find(y + n) ) ans++; else { fa[find(x + n)] = find(y); fa[find(x + n + n)] = find(y + n); fa[find(x)] = find(y + n + n); } } } cout << ans << endl; return 0;
}
- 1
信息
- ID
- 985
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 46
- 已通过
- 11
- 上传者