1 条题解

  • 0
    @ 2024-11-25 13:59:57
    #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
    上传者