1 条题解

  • 1
    @ 2025-1-18 14:54:09
    #include <iostream>
    using namespace std;
    
    const int P = 998244353;
    
    int fa[4000010];
    int find(int x) 
    {
        return fa[x] == x ? x : (fa[x] = find(fa[x]));
    }
    void merge(int x, int y) 
    {
        fa[find(x)] = find(y);
    }
    
    int main() 
    {
        cin.tie(nullptr)->sync_with_stdio(false);
        int n, m;
        cin >> n >> m;
    
        for (int i = 1; i <= n; ++i)
            fa[i] = i;
    
        int k, x, y, ans = 0;
    
        while (m--) 
        {
            cin >> k >> x >> y;
    
            if (k == 0)
                merge(x, y);
            else if (find(x) == find(y))
                ans = (ans << 1) + 1, ans %= P;
            else
                ans = ans << 1, ans %= P;
        }
    
        cout << ans << '\n';
        return 0;
    }
    

    信息

    ID
    5540
    时间
    3000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    0
    上传者