P1892 团伙
感谢所有AC
思路
并查集与反集(敌人的敌人就是朋友,朋友的朋友也是朋友)(反集还需要加深理解)。
代码
#include<iostream>
using namespace std;
int n, m, a, b, ans, fa[2100];
char ch;
int find(int x) {
if (fa[x] == x)return x;
return fa[x] = find(fa[x]);
}
int main(void) {
cin >> n >> m;
for (int i = 1; i <= n << 1; i++) {
fa[i] = i;
}
for (int i = 1; i <= m; i++) {
cin >> ch >> a >> b;
if (ch == 'F') {
fa[find(a)] = find(b);
}
else {
fa[find(a + n)] = find(b);
fa[find(b + n)] = find(a);
}
}
for (int i = 1; i <= n; i++) {
if (fa[i] == i)ans++;
}
cout << ans;
return 0;
}

浙公网安备 33010602011771号