题目求封闭一个城市后要建造多少路其他城市才联通,就是求剩下的强连通分量的值再减1即可
用dfs寻找强连通分量,得到最后的值记住减1
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int vis[1001];
vector<int>road[1001];
int a,b,c;
void dfs(int pos)
{
vis[pos]=1;
for(int i=0;i<road[pos].size();i++)
{
if(!vis[road[pos][i]])
dfs(road[pos][i]);
}
return;
}
int main()
{
scanf("%d %d %d",&n,&m,&k);
for(int i=1;i<=m;i++)
{
scanf("%d %d",&a,&b);
road[a].push_back(b);
road[b].push_back(a);
}
int sum=0;
for(int i=1;i<=k;i++)
{
sum=0;
scanf("%d",&c);
memset(vis,0,sizeof(vis));
vis[c]=1;
for(int j=1;j<=n;j++)
if(!vis[j])
{
sum++;
dfs(j);
}
printf("%d\n",sum-1);
}
}