#include<bits/stdc++.h>
using namespace std;
int f[600];
int lost[600];
int n,m,a,b;
vector<int >w;
struct node{
int x,y;
}road[5100];
int get(int x)
{
return f[x]==x?f[x]:f[x]=get(f[x]);
}
void merge(int x,int y)
{
int nx=get(x);
int ny=get(y);
if(nx!=ny)
f[nx]=ny;
}
void init(int x)
{
for(int i=0;i<x;i++)
{
f[i]=i;
}
}
int main()
{
cin>>n>>m;
init(n);
for(int i=0;i<m;i++)
{
cin>>a>>b;
road[i].x=a;
road[i].y=b;
merge(a,b);
}
int num,x,cnt=0;
cin>>num;
for(int i=0;i<n;i++)
{
if(f[i]==i)
cnt++;
}
for(int i=0;i<num;i++)
{
cin>>x;
init(n);
lost[x]=1;
int cnt1=0;
for(int j=0;j<m;j++)
{
if(!lost[road[j].x]&&!lost[road[j].y])
{
merge(road[j].x,road[j].y);
}
}
for(int i=0;i<n;i++)
{
if(f[i]==i&&!lost[i])
cnt1++;
}
if(cnt1>cnt)
{
cout<<"Red Alert: City "<<x<<" is lost!"<<endl;
}
else
{
cout<<"City "<<x<<" is lost."<<endl;
}
cnt=cnt1;
if(cnt1==0)
{
cout<<"Game Over.";
return 0;
}
}
}
L2-013 红色警报 (25 分)
最新推荐文章于 2022-04-14 16:26:58 发布