当前位置: 首页 > news >正文

L2-013 红色警报

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

每次删除城市都重新构造并查集查询根节点的数量

SB编译器给我报错,说我变量名和上一道题目用的函数名重复,真是TM无敌了

代码 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,k,c,pre[509];
int die[509]{0},r1[5009],r2[5009];
void cc(){for(int i=0;i<n;++i)pre[i]=i;
}
int find(int x){if(pre[x]!=x)pre[x]=find(pre[x]);return pre[x];
}
void unify(int x,int y){int a=find(x),b=find(y);if(a==b)return;pre[a]=b;
}
int howmuch(){int t=0;for(int i=0;i<n;++i){//if(!kill[i])cout<<i<<" "<<pre[i]<<" "<<len[i]<<";";if(!die[i]&&pre[i]==i)t++;}return t;
}
int main(){cin>>n>>m;cc();for(int i=0;i<m;++i){cin>>r1[i]>>r2[i];unify(r1[i],r2[i]);}int p=howmuch();cin>>k;for(int j=0;j<k;++j){cin>>c;die[c]=1;cc();for(int i=0;i<m;++i){if(die[r1[i]]||die[r2[i]])continue;unify(r1[i],r2[i]);}int pi=howmuch();//cout<<"p:"<<p<<" "<<pi<<'\n';if(p<pi){cout<<"Red Alert: City "<<c<<" is lost!\n";}else cout<<"City "<<c<<" is lost.\n";p=pi;}if(k==n)cout<<"Game Over.";return 0;
}

相关文章:

  • 【专题刷题】双指针(二)
  • 带你从入门到精通——知识图谱(六. 知识融合)
  • 半导体设备通信标准—secsgem v0.3.0版本使用说明文档(2)之GEM(SEMI 30)
  • 零基础上手Python数据分析 (15):DataFrame 数据排序与排名 - 快速定位关键数据
  • 【leetcode hot 100 136】只出现一次的数字
  • openlayer的基本使用(区域绘制、点线绘制、手动绘制轨迹)
  • 【LaTeX】Misplaced alignment tab character . ^^I
  • 如何下载免费地图数据?
  • GKI 介绍
  • C++算法(9):数组作为函数参数,注意事项与实践
  • 【C++算法】61.字符串_最长公共前缀
  • 利用 Python 和 AI 技术创作独特的图像艺术作品
  • Flutter 与原生通信
  • SAP系统交货已完成标识
  • Redis(一) - Redis安装教程(Windows + Linux)
  • 数据结构与算法入门 Day 0:程序世界的基石与密码
  • 前端ES6基本语法,以及前端项目模板vue-admin-template和后端进行对接(跨域问题的解决)
  • 如何解除Excel只读状态?4种方法全解析
  • 人工智能——梯度提升决策树算法
  • Mitmproxy 11 发布 —— 完整支持 HTTP/3!
  • 淘宝联盟推广做网站违法/谷歌seo排名技巧
  • 灰色网站怎么做seo/优化网站软文
  • 网站建设seo优化推广/seo关键词排名优化矩阵系统
  • 域名解析网站登录/福州专业的seo软件
  • 天津做网站开发的/北京seo培训
  • 六安网站制作/制作app平台需要多少钱