求助
查看原帖
求助
1179024
DPjushi楼主2023/11/22 22:36

悬赏关注

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;

typedef long long l;
l n, m, x, y, cnt = 0, dad[100005], enm[100005];
bool b[100005];
char ch;

l find(l x) {
    if (dad[x] == x) return x;
    return dad[x] = find(dad[x]);
}

int main() {
    scanf("%lld%lld", &n, &m);
    for (l i = 1; i <= n; ++i) {
        dad[i] = i;
    }
    for (l i = 1; i <= m; ++i) {
        cin >> ch;
        scanf("%lld%lld", &x, &y);
        if (ch == 'S') {
            dad[find(x)] = find(y);
        } else {
            if (enm[x] == 0) {
                enm[x] = find(y);
            } else {
                dad[find(enm[x])] = find(y);
            }
            if (enm[y] == 0) {
                enm[x] = find(y);
            } else {
                dad[find(enm[x])] = find(y);
            }
        }
    }
    fill(b + 1, b + n + 1, 0);
    for (l i = 1; i <= n; ++i) {
        if (b[find(i)] == 0) {
            b[dad[i]] = 1;
            cnt++;
        }
    }
    x = 1;
    for (l i = 1; i <= cnt / 2; ++i) {
        x *= 10;
    }
    printf("%lld", x);
    return 0;
}
2023/11/22 22:36
加载中...