1 条题解

  • 0
    @ 2022-8-12 16:41:24

    #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
    上传者