题目链接:点击打开链接
题目大意:略。
解题思路:注意每次 pre(原始连通个数)都需要被更新。
AC 代码
usingnamespacestd; typedeflonglongll; intn; intvis[520]; intg[520][520]; vector<int>vec; voiddfs(ints) { vis[s]=1; for(inti=0;i<n;i++) if(!vis[i] &&g[s][i]) dfs(i); } intfun() { intcnt=0; mem(vis,0); for(inti=0;i<vec.size();i++) vis[vec[i]]=1; for(inti=0;i<n;i++) { if(!vis[i]) dfs(i), cnt++; } returncnt; } intmain() { intm,u,v,q,cur; scanf("%d%d",&n,&m); for(inti=0;i<m;i++) { scanf("%d%d",&u,&v); g[u][v]=g[v][u]=1; } intpre=fun(); scanf("%d",&q); for(inti=0;i<q;i++) { scanf("%d",&u); vec.push_back(u); cur=fun(); if(cur<=pre) printf("City %d is lost.\n",u); elseprintf("Red Alert: City %d is lost!\n",u); pre=cur; } if(q==n) puts("Game Over."); return0; }