悬赏关注
#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;
}