浙大 PAT 1013 图的深度优先搜索

来源:互联网 发布:sql设置主键 编辑:程序博客网 时间:2024/06/16 18:41
#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;}