告诉你有N座城市,然后有K条路,问你如果一座城掉了,要把其他所有的城连起来,要修几条路。
就简单的深搜就可以搞定了。数据比较少,多的话会超时,打个表就行了。
#include <cstdio>
#include <vector>
#include <string>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define INF 0x3fffffff
using namespace std;
int pic[1005][1005],vis[1005],res[1005],cnt,n;
void dfs(int x)
{
vis[x]=1;
for (int i=1;i<=n;i++)
{
if (vis[i]==0&&pic[x][i])
{
dfs(i);
}
}
}
int main()
{
memset(pic,0,sizeof(pic));
memset(res,0,sizeof(res));
int m,k,a,b;
cin>>n>>m>>k;
while (m--)
{
cin>>a>>b;
pic[a][b]=pic[b][a]=1;
}
while (k--)
{
int x;
cin>>x;
cnt=0;
memset(vis,0,sizeof(vis));
vis[x]=1;
for (int j=1;j<=n;j++)
{
if (vis[j]==0)
{
dfs(j);
cnt++;
}
}
cout<<cnt-1<<endl;
}
}