C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)

L2-013 红色警报 (25分)
战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的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.。
输入样例:

5 4
0 1
1 3
3 0
0 4
5
1 2 0 4 3
输出样例:

City 1 is lost.
City 2 is lost.
Red Alert: City 0 is lost!
City 4 is lost.
City 3 is lost.
Game Over.

#include<iostream>
using namespace std;
const int maxn1 = 500;
const int maxn2 = 5005;
int count1 = 0;//统计当前的联通分量个数
int pre[maxn1];
struct edge {int x, y;
}e[maxn2];
int find(int x)//并查集模板,查找
{while (x != pre[x]) x = pre[x];return x;
}
void merge(int x, int y)//并查集模板,合并
{int a = find(x);int b = find(y);if (a != b) pre[a] = b;
}
void init()
{for (int i = 0; i < maxn1; i++) pre[i] = i;//初始化pre数组
}
int main()
{int n, k, x, y;cin >> n >> k;init();for (int i = 0; i < k; i++)//将边存入结构体{cin >> x >> y;e[i].x = x;e[i].y = y;merge(x, y);//合并边}for (int i = 0; i < n; i++){if (pre[i] == i)count1++;//联通分类个数,即独立的块数}int flag[maxn1]{ 0 };int h;cin >> h;for (int i = 0; i < h; i++){cin >> x;//输入被攻占城市编号init();flag[x] = 1;//标记该城市被攻占int count2 = 0;//记录被攻占后的城市的联通分量个数for (int z = 0; z < k; z++){if (flag[e[z].x] == 0 && flag[e[z].y] == 0)//如果该道路的两个城市都未被攻占{merge(e[z].x, e[z].y);//合并}}for (int j = 0; j < n; j++){if (pre[j] == j && flag[j] == 0)//如果未被攻占且pre[j]==j;{count2++;//记录当前的联通分量数;}}if (count2 > count1)//联通分量大于该城市被攻占前的,红色警报printf("Red Alert: City %d is lost!\n", x);else//小于等于,只是丢失printf("City %d is lost.\n", x);if (count2 == 0)printf("Game Over.\n");count1 = count2;//被攻占后,更新当前的联通分量}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成员函数指针作为参数是,静态函数和非静态函数的区别

成员函数指针作为参数时&#xff0c;静态函数和非静态函数的区别 举个 QT 的例子&#xff08;没学过QT的也不要紧&#xff0c;这适用于学习C的同学&#xff09;&#xff0c;当我有两个类&#xff0c;Teacher 类和 Student 类。现在有一个场景就是&#xff0c;Teacher 类会发出…

谷歌云TPU服务正式全面开放:「AlphaGo背后的芯片」进入商用化

来源&#xff1a;机器之心概要&#xff1a;作为科技巨头的谷歌早已把这种高度定制化产品应用在了自己的服务器中&#xff0c;而本周一&#xff0c;谷歌宣布其他公司马上也将可以享受新型芯片带来的计算服务了。2016 年 5 月&#xff0c;谷歌向世人发布了一款特别的机器学习专属…

linux 之间 copy 传输文件方法:ftp、samba、sftp、scp、sz/rz

不同的 Linux 之间 copy 文件通常有4种方法 1.ftp2.samba服务3.sftp4.scp 前三种方法都比较繁琐&#xff0c;最简单的方法就是 scp scp scp 本地用户名IP地址:文件名1 远程用户名IP地址:文件名2 [本地用户名IP地址:] 可以不输入,可能需要输入远程用户名所对应的密码.可能有…

Server.Transfer 和Response.Redirect 比较

作者&#xff1a;卡尔穆尔 原著&#xff1a;Developer.com 翻译&#xff1a;陈梦 如果你读过很多行业杂志和 ASP.NET 示例&#xff0c;你会发现&#xff0c;大多数人使用 Response.Redirect 将用户引导到另一个页面&#xff0c;而另一些人好像偏爱于神秘的 Server.Transfer&…

C++学习之路 | PTA(天梯赛)—— L2-010 排座位 (25分)(带注释)(并查集)(精简)

L2-010 排座位 (25分) 布置宴席最微妙的事情&#xff0c;就是给前来参宴的各位宾客安排座位。无论如何&#xff0c;总不能把两个死对头排到同一张宴会桌旁&#xff01;这个艰巨任务现在就交给你&#xff0c;对任何一对客人&#xff0c;请编写程序告诉主人他们是否能被安排同席。…

波士顿动力新年视频第一发,机器人狗能为朋友开门了!

来源&#xff1a;36氪概要&#xff1a;波士顿动力公司的那只黄色机器人狗SpotMini&#xff0c;你还记得吗&#xff1f;波士顿动力公司的那只黄色机器人狗SpotMini&#xff0c;你还记得吗&#xff1f;它上一次亮相是在去年11月&#xff0c;当时它还在一片后院的草地上恣意奔跑。…

Template Method 和 Strategy 模式

Template Method 和 Strategy 模式

Makefile详解——从入门到精通

转自ChinaUnix&#xff0c;作者gunguymadman&#xff0c;陈皓。链接地址&#xff1a;http://www.chinaunix.net/jh/23/408225.html 陈皓 CSDN 博客&#xff1a;http://blog.csdn.net/haoel/article/details/2886 http://blog.csdn.net/ruglcc/article/details/7814546 写的相…

实现了HTTP多线程下载

不是使用每连接一线程的技术&#xff0c;而是使用多路复用技术。作了一个分配算法。第一个HTTP Request返回取得ContentLength之后&#xff0c;如果使用多个连接下载&#xff0c;则需要一个分配算法&#xff0c;分配每个Request所对应的Range。分配的部分可能是一个连续的块&am…

C++学习之路 | PTA(天梯赛)—— L2-007 家庭房产 (25分)(带注释)(并查集)(精简)

L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产&#xff0c;请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式&#xff1a; 输入第一行给出一个正整数N&#xff08;≤1000&#xff09;&#xff0c;随后N行&#xff0c;每行按下列格式给出一个…

是时候不把智能手机叫做电话了:移动AI时代来临!

来源&#xff1a;EET电子工程专辑概要&#xff1a;全新的iPhone X集成了用于人脸识别的神经引擎&#xff0c;但这仅仅是一个开始。全新的iPhone X集成了用于人脸识别的神经引擎&#xff0c;但这仅仅是一个开始。嵌入式神经引擎和专用智能处理器在边缘设备上实现了人工智能(AI)&…

C#中MSMQ消息队列测试疑问

今天我通过C#程序向某台机器发送MQ消息队列,并且已经将目标机器的消息队列设置消息存储限额无限制.我持续的把消息发送到目标机器上,发现只能发送1000条消息,其他的消息无法接收到!!!于是我尝试通过程序把消息队列的一些消息删除掉,最后发现消息队列又多了起来,但是到1000条的时…

Facade 和 Mediator 模式

Facade 和 Mediator 模式

C++学习之路 | PTA(甲级)—— 1114 Family Property (25分)(带注释)(并查集)(精简)

1114 Family Property (25分) This time, you are supposed to help us collect the data for family-owned property. Given each person’s family members, and the estate&#xff08;房产&#xff09;info under his/her own name, we need to know the size of each fami…

拥抱AI大趋势,ARM发布两款AI芯片架构

来源&#xff1a;量子位概要&#xff1a;ARM发布了两款针对移动终端的AI芯片架构&#xff0c;物体检测&#xff08;Object Detection&#xff0c;简称OD&#xff09;处理器和机器学习&#xff08;Machine Learning&#xff0c;简称ML&#xff09;处理器。今天&#xff0c;ARM发…

Ubuntu 安装 mysql、sqlite3、postgresql

NAVICAT 官网&#xff1a;http://www.navicat.com.cn/products NAVICAT16 PREMIUM NAVICAT16 &#xff1a;http://zzzzzz.me/post-73329.html Xmanager &#xff1a;https://www.xshellcn.com/ 1、Ubuntu 安装 mysql ubuntu上安装MySQL非常简单只需要几条命令就可以完成。 1…

牡丹园

其实从少林寺去洛阳非常近&#xff0c;当时想赶当天晚上的火车去另一个地方&#xff0c;所以从少林寺又回到郑州火车站&#xff0c;结果没有票&#xff0c;于是取消了。决定在郑州住一晚第二天去洛阳。 看到洛阳路边隔断种的都是这种植物&#xff0c;星星点点很是好看&#xff…

Singleton 和 Monostate 模式

Singleton 和 Monostate 模式 怎样才能使得两个实例表现得像一个对象呢&#xff1f;很简单&#xff0c;只要把所有的变量都变成静态变量即可。 public class Monostate {private static int itsX 0;public Monostate() {}public void setX(final int x) {itsX x;}public int…

十张图看懂未来大数据世界

作者&#xff1a;薄云借智来源&#xff1a;钱塘江大数据随着互联网云时代的来临&#xff0c;大数据与云计算就像一个硬币的正反两面&#xff0c;势必会影响到社会生活的方方面面&#xff0c;改变我们现有的规则和秩序。伴随着大数据与云计算产业的不断发展&#xff0c;未来到底…

MediaWiki初探:安装及使用入门

来源&#xff1a;http://blog.csdn.net/wangnan537/article/details/37743497 MediaWiki是著名的开源wiki引擎&#xff0c;全球最大的wiki项目维基百科(百科词条协作系统)是使用MediaWiki的成功范例&#xff0c;MediaWiki的最大作用在于对知识的归档&#xff0c;可用于构建企业…