题库首页 › 青少年软件编程(C语言) › 题目 11320

红色警报 战争中保持各个城市间的连通性非常重要。本题要求你编写一个报警程序,当失去一个城市导致国家被分裂为多个无法连通的区域时,就发出红色警报。注意:若该国本来就不完全连通,是分裂的k个区域,而失去一个城市并不改变其他城市之间的连通性,则不要发出警报。 时间限制:5000 内存限制:65536 输入 输入在第一行给出两个整数 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.

正确答案:参考程序(Python):红色警报。并查集判断连通分量。每失一城,重算连通分量数,若比之前增加则Red Alert否则City lost。最后全失Game Over。核心:并查集连通性判断。

试卷来源:202406 青少年等级考试C/C++真题七级

本卷相关题目

在线做题 同科目题库