《手把手教你》系列基礎篇(九十一)-java+ selenium自動化測試-框架設計基礎-Logback實現日誌輸出-下篇(詳解教程)
阿新 • • 發佈:2022-04-19
題目詳情 - L2-013 紅色警報 (25 分) (pintia.cn)
#include<iostream> using namespace std; const int N=1e5+10; int p[N]; bool st[N]; struct mess{ int x,y; }v[N]; int find(int x) { if(p[x]!=x) p[x]=find(p[x]); return p[x]; } void merge(int x,int y) { int xx=find(x); int yy=find(y); if(xx!=yy) p[xx]=yy; } int main(){ int n,m; cin>>n>>m; for(int i=0;i<n;i++) p[i]=i; for(int i=0;i<m;i++) { cin>>v[i].x>>v[i].y; merge(v[i].x,v[i].y); } int sum=0; for(int i=0;i<n;i++) if(p[i]==i) sum++;int q,k=0; cin>>q; while(q--) { int x; cin>>x; k++; st[x]=true; for(int i=0;i<n;i++) p[i]=i; for(int i=0;i<m;i++) { if(st[v[i].x]||st[v[i].y]) continue; merge(v[i].x,v[i].y); }int t=0; for(int i=0;i<n;i++) if(p[i]==i) t++; //cout<<t<<endl; if(t-sum==1||t==sum) printf("City %d is lost.\n",x); else printf("Red Alert: City %d is lost!\n",x); sum=t; } if(k==n) cout<<"Game Over."<<endl; return 0; }