1 条题解
-
0
#include <math.h> #include <iostream> using namespace std; typedef long long ll; const int N = 4e6 + 5, M = 8e6 + 5; const int MOD = 998244353; int n, p[N], m; int find(int u) { return u == p[u] ? u : p[u] = find(p[u]); } void merge(int u, int v) { int fu = find(u), fv = find(v); if (fu != fv) p[fu] = fv; } int main() { ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr); int op, u, v; cin >> n >> m; for (int i = 0; i <= n; i++) p[i] = i; int ans = 0; for (int i = 1; i <= m; i++) { cin >> op >> u >> v; if (op == 0) merge(u, v); else ans = (ans << 1 | (find(u) == find(v))) % MOD; } cout << ans; return 0; }
- 1
信息
- ID
- 919
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 66
- 已通过
- 17
- 上传者