NKOI 期末赛题D 假期关楼
来源:互联网 发布:帮淘宝刷销量怎么举报 编辑:程序博客网 时间:2024/06/07 10:10
P3696假期关楼
时间限制 : 2000MS 空间限制 : 65536KB
问题描述
暑假到了,大部分学生都回家了,只有少量竞赛学生还在学校里。
学校打算逐步把教学楼都关闭。以减少运营成本。
学校里的N栋教学楼(编号1到N)通过M条双向道路连接起来。每关闭了一栋楼,与该楼相连的所有道路同时都会被关闭。
何老板想知道,学校每关闭一栋楼,剩下的处于开放状态的教学楼是否是连通的。连通就是指任何两个开放的楼都可以相互到达。
注意,有可能一开始所有楼都不连通。
输入格式
第一行,一个两个整数N和M
接下来M行,每行两个整数x和y,表示x、y两栋楼间有道路直接相连。
接下来N行,每行一个整数代表一栋楼的编号。整个N行数字表示依次关闭的教学楼的顺序。
输出格式
共N行,每行是"YES"或者"NO",若剩下的楼是连通的输出YES,否则输出NO。
其中第1行表示一开始整个学校的楼是否连通。
其中第i+1行表示第i次关闭教学楼后,剩下的楼是否连通。
样例输入
4 3
1 2
2 3
3 4
3
4
1
2
样例输出
YES
NO
YES
YES
提示
对于40%的数据1≤N,M≤3000
对于100%的数据1≤N,M≤200000
并查集
倒着考虑操作,就变成了加边。
记录当前时刻有多少个连通块,如果有一个,那么答案是YES,否则是NO。
对于当前点,把当前点与已经添加进的点合并。每合并一次,连通块减一。
#include<cstdio>#include<iostream>using namespace std;const int maxn=200005;int n,m,ct,father[maxn],s[maxn],ans[maxn];bool mark[maxn];int END[2*maxn],NEXT[2*maxn],LAST[maxn];inline void _read(int &x){ char t=getchar();bool sign=true; while(t<'0'||t>'9') {if(t=='-')sign=false;t=getchar();} for(x=0;t>='0'&&t<='9';t=getchar())x=x*10+t-'0'; if(!sign)x=-x;}int getfather(int x){return father[x]==x?x:father[x]=getfather(father[x]);}void insert(int a,int b){ END[++ct]=b; NEXT[ct]=LAST[a]; LAST[a]=ct; }int main(){_read(n);_read(m);int i,j,x,y,sum=0;for(i=1;i<=m;i++){_read(x);_read(y);insert(x,y);insert(y,x);}for(i=1;i<=n;i++)father[i]=i;for(i=1;i<=n;i++)_read(s[i]);for(i=n;i>=1;i--){sum++;//sum记录连通分量x=s[i];for(j=LAST[x],y=END[j];j;j=NEXT[j],y=END[j])if(mark[y]){ int fx=getfather(x); int fy=getfather(y); if(fx!=fy)sum--,father[fx]=fy;//找到一组边添加,并减少连通分量}ans[i]=sum;mark[x]=1;//mark记录是否讨论过当前点}for(i=1;i<=n;i++) if(ans[i]==1)puts("YES"); else puts("NO");}
0 0
- NKOI 期末赛题D 假期关楼
- NKOJ-3696 假期关楼<NKOI 高一期末赛>
- NKOI 期末赛题C 比赛转播
- NKOI 3503 数列[6月月赛题D]
- CDUESTC 2016 假期赛1 D题
- 并查集--假期关楼
- NKOI 3539 移棋子游戏[6月月赛题A]
- NKOI 3692 合唱团[6月月赛题B]
- NKOI 2422 植物大战僵尸[6月月赛题c]
- OJ期末模考D
- CDUESTC 2016 假期赛1 A题
- CDUESTC 2016 假期赛1 B题
- CDUESTC 2016 假期赛1 C题
- CDUESTC 2016 假期赛1 E题
- 十一假期做西电的信安比赛(渗透关)
- 假期水题①
- 假期
- 假期
- Idea15 + QtJambi +Jdbc 环境配置
- Android Settings修改小记
- 服务器命令行,tomcat中代码部署及在eclipse中配置
- Poj 1724 ROADS【二维限制最短路+SPFA】
- VS HelpLibrary 找不到 重新安装方法
- NKOI 期末赛题D 假期关楼
- ubuntu14.04搜索不到wifi解决
- 给 Android 开发者的 RxJava 详解
- windows设置及取消开机启动程序
- EASYUI 表单(FORM)用法
- Android6.0运行时权限的便捷解决方案
- 字典的基本操作
- 简单有趣介绍神经网络
- 大数据量、高并发量网站解决方案