没过样例,求debug
查看原帖
没过样例,求debug
912248
FuckYouJinhai楼主2023/12/17 11:28
#include<bits/stdc++.h>
using namespace std;
int c, t, n, m, T = 114514, F = -114514, U, sum;
int d[100010];
unordered_map<int, int>fa;
int get(int a) {
    if(fa[a] == a)
        return a;
    else {
        fa[a] = get(fa[a]);
        return fa[a];
    }
}
void merge(int a, int b) {
    fa[get(b)] = get(a);
}
void check(int a) {
    if (get(a) == get(-a) || get(a) == U)
        sum++;
}
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> c >> t;
    while (t--) {
        fa.clear();
        sum = 0;
        cin >> n >> m;
        for(int i = 1; i <= n; ++i) {
            fa[i] = d[i] = i;
            fa[-i] = -i;
        }
        for (int i = 1; i <= m; ++i) {
            char o;
            int x, y;
            cin >> o;
            if (o == 'T') {
                cin >> x;
                d[x] = T;
            }
            if (o == 'F') {
                cin >> x;
                d[x] = F;
            }
            if (o == 'U') {
                cin >> x;
                d[x] = U;
            }
            if (o == '+') {
                cin >> x >> y;
                d[x] = d[y];
            }
            if (o == '-') {
                cin >> x >> y;
                d[x] = -d[y];
            }
        }
        for (int i = 1; i <= n; ++i)
            merge(i, d[i]);
        for (int i = 1; i <= n; ++i)
            check(i);
        cout << sum << "\n";
    }
}
2023/12/17 11:28
加载中...