您的位置:首页 > 其它

团体程序设计天梯赛-练习集-L2-013. 红色警报(dfs)

2017-03-16 18:30 288 查看
/*
dfs 简单深搜,没想出来*/
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn=510;int vis[maxn],flag[maxn],map1[maxn][maxn];int n,m,k,area;void dfs(int x){vis[x]=1;for(int i=0;i<n;i++){if(!vis[i]&&!flag[i]&& map1[x][i])dfs(i);}}int main(){cin>>n>>m;for(int i=0;i<m;i++){int a,b;cin>>a>>b;map1[a][b]=1;map1[b][a]=1;}area=0;memset(vis,0,sizeof(vis));for(int i=0;i<n;i++){if(!vis[i])area++,dfs(i);}int last=area;cin>>k;while(k--){int x;cin>>x;flag[x]=1;area=0;memset(vis,0,sizeof(vis));for(int i=0;i<n;i++)map1[x][i]=map1[i][x]=0;for(int i=0;i<n;i++)if(!vis[i]&&!flag[i])area++,dfs(i);if(area>last)printf("Red Alert: City %d is lost!\n",x);else printf("City %d is lost.\n",x);last=area;}for(int i=0;i<n;i++)if(!flag[i])return 0;puts("Game Over.");return 0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: