1013. Battle Over Cities (25)
截去一个节点后,DFS无向图得子图个数n
需添加道路条数 = n-1
# include <cstdio>
# include <cstring>
# define max 1000
int map[max][max]={0};//道路权值,此处标志是否连通
int visited[max];
int N, M, K;
void Init(int m)
{
int a, b;//a--->b
for(int i = 0; i < m; i ++)
{
scanf("%d%d",&a,&b);
map[a][b] = map[b][a] = 1;
}
}
void dfs(int start)
{
visited[start] = 1;
for(int end = 1; end <= N; end ++)
{
if(!visited[end] && map[start][end] == 1)
dfs(end);
}
}
int main()
{
scanf("%d%d%d",&N,&M,&K);
Init(M);
int path_num, index;
for(int i = 0; i < K; i ++)
{
path_num = 0;
memset(visited,0,sizeof(visited));
scanf("%d",&index);
visited[index] = 1;
for(int j = 1; j <= N; j ++)
{
if(visited[j] == 0)
{
dfs(j);
path_num ++;
}
}
printf("%d\n",path_num - 1);
}
return 0;
}