CF1624G悬关
  • 板块题目总版
  • 楼主kimi0705
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/12/2 21:39
  • 上次更新2023/12/2 21:46:02
查看原帖
CF1624G悬关
637788
kimi0705楼主2023/12/2 21:39
  1. CF1624G 没有讨论区qwq
  2. 悬关
#include <bits/stdc++.h>
#define x first
#define y second
#define pii pair <int, int>
using namespace std;
const int N = 2e5 + 10;
int t, n, m, a, b, c, ans;
int p[N];
struct node{
    int x, y, z;
    bool vis;
};
vector <node> V;
int find(int x) {
    if (p[x] != x) p[x] = find(p[x]);
    return p[x];
}

int main() {
    scanf("%d", &t);
    while(t--) {
        ans = 0;
        scanf("%d%d", &n, &m);
        V.resize(m);
        for (node &i : V) {
            scanf("%d%d%d", &i.x, &i.y, &i.z);
            i.vis = true;
        }
        for (int i = 30; i >= 0; i--) {
            int k = 1 << i, q;
            bool ok = true;
            for (int i = 1; i <= n; i++) p[i] = i;
            for (node i : V) {
                if(!i.vis) continue;
                if(i.z & k == 0) p[find(i.x)] = find(i.y);
            }
            q = find(1);
            for (int i = 1; i <= n; i++) {
                if(q != find(i)){
                    ok = false;
                    break;
                }
            }
            if(ok) {
                for (node &i : V) {
                if(i.z & k) i.vis = 0;
            }
            } else {
                ans += k;
            }
        }
        printf("%d\n", ans);
    }
}
2023/12/2 21:39
加载中...