題目大意:給出計算機之間的連線配置,詢問某兩臺計算機是否相連。判斷兩個點是否在同一個連通分量裡,用並查集處理。
#include <cstdio>
#define MAXN 1000000 int p[MAXN]; int find(int x)
{
return (x == p[x]) ? x : p[x] = find(p[x]);
} int main()
{
#ifdef LOCAL
freopen("in", "r", stdin);
#endif
int T;
scanf("%d", &T);
while (T--)
{
int n;
scanf("%d", &n);
getchar();
for (int i = ; i <= n; i++)
p[i] = i;
char str[];
int success = , fail = ;
while (gets(str))
{
if (str[] == ) break;
int a, b;
sscanf(str+, "%d%d", &a, &b);
int pa = find(a);
int pb = find(b);
if (str[] == 'c')
{
if (pa != pb) p[pb] = pa;
}
else if (str[] == 'q')
{
if (pa != pb) fail++;
else success++;
}
}
printf("%d,%d\n", success, fail);
if (T) printf("\n");
}
return ;
}