题意:
给出N个城镇m条道路,K个询问。
查询:输出切断某个城镇后,最少多少条线路可以使其他城镇连同。
思路:
对于没访问过的城镇遍历,分出的区域数-1 即为需要的道路数
#include <iostream>
#include <stdio.h>
#include <cstring>
using namespace std;
int n,m,k;
char mp[1005][1005];
int visit[1005];
void dfs(int x)
{
visit[x]=1;
for(int i=1;i<=n;i++)
{
if(mp[x][i]==1&&visit[i]==0)
dfs(i);
}
}
int main()
{
cin>>n>>m>>k;
while(m--)
{
int x,y;
cin>>x>>y;
mp[x][y]=mp[y][x]=1;
}
while(k--)
{ int cot=0;
int x;
cin>>x;
memset(visit,0,sizeof(visit));
visit[x]=1;
for(int i=1;i<=n;i++)
{
if ( visit[i]==0 )
{
dfs(i);
cot++;
}
}
cout<<cot-1<<endl;
}
return 0;
}