#include <stdio.h>
#include <string.h>
int city[1010][1010] = {0}, tmp[1010][1010], flagtmp[1010];
int N, M, K;
void dfs(int i) {
int j;
for(j = 1; j <= N; j ++) {
if(tmp[i][j] == 1 && flagtmp[j] == 0) {
flagtmp[j] = 1;
dfs(j);
}
}
}
int main () {
int i, j, h;
scanf("%d %d %d", &N, &M, &K);
int a, b;
for(i = 1; i <= M; i ++) {
scanf("%d %d", &a, &b);
city[a][b] = 1;
city[b][a] = 1;
}
for(i = 1; i <= K; i ++) {
for(j = 1; j <= N; j ++) {
for(h = 1; j <= N; j ++) {
tmp[j][h] = city[j][h];
}
}
scanf("%d", &a);
for(j = 1; j <= N; j ++) {
tmp[a][j] = 0;
tmp[j][a] = 0;
}
int count = 0;
memset(flagtmp, 0, sizeof(flagtmp));
for(j = 1; j <= N; j ++) {
if(flagtmp[j] == 0) {
count ++;
flagtmp[j] = 1;
dfs(j);
}
}
printf("%d\n", count - 2);
}
return 0;
}
浙大 PAT 1013 图的深度优先搜索
最新推荐文章于 2019-04-02 17:27:00 发布