CCCC 红色警报
题意:
战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。
输入格式:
输入在第一行给出两个整数N(0 < N <=500)和M(<=5000),分别为城市个数(于是默认城市从0到N-1编号)和连接两城市的通路条数。随后M行,每行给出一条通路所连接的两个城市的编号,其间以1个空格分隔。在城市信息之后给出被攻占的信息,即一个正整数K和随后的K个被攻占的城市的编号。
注意:输入保证给出的被攻占的城市编号都是合法的且无重复,但并不保证给出的通路没有重复。
输出格式:
对每个被攻占的城市,如果它会改变整个国家的连通性,则输出“Red Alert: City k is lost!”,其中k是该城市的编号;否则只输出“City k is lost.”即可。如果该国失去了最后一个城市,则增加一行输出“Game Over.”。
分析:
1、并查集判连通,若城市被攻占,则不加入并查集。
2、连通块个数增加,发出红色警报。
#include<bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
const int MAXN = 500 + 10;
const int MAXT = 5000 + 10;
int fa[MAXN];
int vis[MAXN];
int v[MAXN];
int Find(int x){
return fa[x] = (fa[x] == x) ? x : Find(fa[x]);
}
void init(){
for(int i = 0; i < MAXN; ++i){
fa[i] = i;
}
}
struct Edge{
int from, to;
void read(){
scanf("%d%d", &from, &to);
}
}num[MAXT];
int main(){
int n, m;
scanf("%d%d", &n, &m);
init();
for(int i = 0; i < m; ++i){
num[i].read();
int x = num[i].from;
int y = num[i].to;
v[x] = 1;
v[y] = 1;
int tmpx = Find(x);
int tmpy = Find(y);
if(tmpx == tmpy) continue;
if(tmpx < tmpy){
fa[tmpy] = tmpx;
}
else{
fa[tmpx] = tmpy;
}
}
int cnt = 0;
for(int i = 0; i < n; ++i){
if(!v[i]) continue;
if(fa[i] == i){
++cnt;
}
}
int w = n;
int k;
scanf("%d", &k);
while(k--){
int t;
scanf("%d", &t);
vis[t] = 1;
--w;
if(w == 0){
printf("City %d is lost.\n", t);
printf("Game Over.\n");
break;
}
init();
for(int i = 0; i < m; ++i){
int x = num[i].from;
int y = num[i].to;
if(vis[x] || vis[y]) continue;
int tmpx = Find(x);
int tmpy = Find(y);
if(tmpx == tmpy) continue;
if(tmpx < tmpy){
fa[tmpy] = tmpx;
}
else{
fa[tmpx] = tmpy;
}
}
int tmp = 0;
for(int i = 0; i < n; ++i){
if(!v[i]) continue;
if(vis[i]) continue;
if(fa[i] == i) ++tmp;
}
if(tmp > cnt){
printf("Red Alert: City %d is lost!\n", t);
}
else{
printf("City %d is lost.\n", t);
}
cnt = tmp;
}
return 0;
}
CCCC 红色警报的更多相关文章
- PAT天梯赛练习题 L2-013 红色警报(并查集+逆序加边)
		L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ... 
- 天梯赛决赛 L2-1.红色警报 并查集
		L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ... 
- L2-013 红色警报 (25 分) (并查集)
		链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805063963230208 题目: 战争中保持各个城市间的连通性非 ... 
- L2-013 红色警报 (25 分)
		L2-013 红色警报 (25 分) 战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全 ... 
- PAT L2-013 红色警报
		https://pintia.cn/problem-sets/994805046380707840/problems/994805063963230208 战争中保持各个城市间的连通性非常重要.本题要 ... 
- L2-013. 红色警报(并查集)*
		L2-013. 红色警报 参考博客 #include <cstdio> #include <algorithm> #include <iostream> #incl ... 
- Struts2漏洞拉响网站安全红色警报以及把Struts2更新为最新版本Struts2.3.15.1步骤
		360网站安全检测平台今日发布红色警报称,广泛应用在国内大型网站系统的Struts2框架正在遭到黑客猛烈攻击.利用Struts2“命令执行漏洞”,黑客可轻易获得网站服务器ROOT权限.执行任意命令,从 ... 
- PAT L2-013 红色警报(并查集求连通子图)
		战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ... 
- L2-013. 红色警报
		战争中保持各个城市间的连通性非常重要.本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报.注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不 ... 
随机推荐
- DNS 访问 Service【转】
			在 Cluster 中,除了可以通过 Cluster IP 访问 Service,Kubernetes 还提供了更为方便的 DNS 访问. kubeadm 部署时会默认安装 kube-dns 组件. ... 
- DB2的常用指令
			注:大写的是固定的,小写的根据自己的实际情况 首先进入 命令窗口, win+r ---> 输入 db2cmd db2 1. 删除数据库 UNCATALOG DB db_name --db_nam ... 
- 我的C语言的新开端<graphics.h>
			进一步接触C语言<graphics.h> #include<stdio.h> #include<graphics.h> #include<conio.h> ... 
- 011.Delphi插件之QPlugins,延时加载服务
			这个DEMO是是把DLL插件的相关信息做成了一个配置文件,主程序加载这个配置文件,从而起到延时加载的作用 主程序代码如下 unit Frm_Main; interface uses Winapi.Wi ... 
- Xcode8.0+和最新的Xcode9.0beta安装Alcatraz插件
			1.安装Alcatraz 1.1终端中输入 rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz ... 
- UVA 1601 双向BFS
			但是我们还不是很清楚每一次的状态怎么储存?我们可以用一个结构体,将每次的位置存起来,但是这个程序中用了一个更好的储存方法:我们知道最大的格数是16*16个,也就是256个,那么我们转换为二进制表示就是 ... 
- OpenMandriva或将放弃32位的支持
			导读 除了Ubuntu计划在其19.10发行版中删除32位包之外,OpenMandriva开发团队也是另一个备受关注的Linux发行版起草计划,以取消对32位包的支持. OpenMandriva计划在 ... 
- 索尼研发的新主机竟兼容现款PSVR!
			索尼PlayStation研发负责人Dominic Mallinson在接受媒体记者采访时表示,现款PSVR头戴式虚拟现实装置可用于下一代PS主机. 新主机兼容现款PSVR 而且,即便新主机上市也不要 ... 
- MongoDB 删除,添加副本集,并修改副本集IP等信息
			MongoDB 删除,添加副本集,并修改副本集IP等信息 添加副本,在登录到主节点下输入 rs.add("ip:port"); 删除副本 rs.remove("ip:po ... 
- 127个常用的JS代码片段,每段代码花30秒就能看懂(上)
			127个常用的JS代码片段,每段代码花30秒就能看懂(上) JavaScript 是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript.” FreeCode ... 
