洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm
农夫约翰和他的奶牛准备去旅行,所以约翰想要把他的农场临时关闭。
农场有N个牛棚(牛棚从1到N编号),有M条路连接这些牛棚(1≤N,M≤3000)。
约翰打算挨个关闭牛棚,在关牛棚的时候,
他突然想起一个有趣的问题:剩余的这些没有关闭的牛棚是不是连通呢?
连通指的是从任何一个牛棚出发,都能到达其他牛棚(注意:已经关闭的牛棚不可以通行)。
Input
第一行包括两个整数N M,
接下来M行,每行输入两个整数x y,表示x和y牛棚之间存在一条路,路是双向通行的。
接下来n行,表示关牛棚的顺序。
Output 输出N行:
第一行表示初始状态下,牛棚是否连通;
接下来N-1行,表示关闭对应牛棚后,剩余牛棚是否联通。
如果连通,输出YES,不连通,输出NO。(最后一次关闭不需要输出)。
————————————————————————————————————————
回来补一波并查集
这里我们做一波离线处理 将删点转换为加点 也就是将关闭变为开启
那么我们每次开启一个牛棚x k++(k指的是当前联通快的个数)
然后我们枚举x的所有出路 找到已经开始的牛棚 如果他们不在一个了联通块内k-- 合并两个块
最后如果这个时刻k是1 那么就是联通 否则不是
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
using namespace std;
const int M=;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,m,k,f[M],h[M],usd[M];
int find(int x){return f[x]==x?x:f[x]=find(f[x]);}
int first[M],cnt,c[M];
struct node{int to,next;}e[*M];
void ins(int a,int b){
cnt++; e[cnt].to=b; e[cnt].next=first[a]; first[a]=cnt;
}
void insert(int a,int b){ins(a,b); ins(b,a);}
int main()
{
int x,y;
n=read(); m=read();
for(int i=;i<=n;i++) f[i]=i;
for(int i=;i<=m;i++) x=read(),y=read(),insert(x,y);
for(int i=;i<=n;i++) c[i]=read();
for(int i=n;i>=;i--){
k++; usd[c[i]]=;
int now=c[i],p=find(now);
for(int j=first[now];j;j=e[j].next){
if(!usd[e[j].to]) continue;
int q=find(e[j].to);
if(p==q) continue;
f[q]=p; k--;
}
h[i]=k;
}
for(int i=;i<=n;i++)
if(h[i]==) printf("YES\n");
else printf("NO\n");
return ;
}
洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm的更多相关文章
- 洛谷P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver
题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...
- 洛谷 P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver
传送门 题目大意: n个谷仓 ,每次关闭一个谷仓,问剩下没被关闭的谷仓是 否联通. 题解:并查集+倒序处理 代码: #include<iostream> #include<cstdi ...
- [USACO16OPEN]关闭农场Closing the Farm(洛谷 3144)
题目描述 Farmer John and his cows are planning to leave town for a long vacation, and so FJ wants to tem ...
- [USACO16OPEN]关闭农场Closing the Farm_Silver
题目描述 FJ和他的奶牛们正在计划离开小镇做一次长的旅行,同时FJ想临时地关掉他的农场以节省一些金钱. 这个农场一共有被用M条双向道路连接的N个谷仓(1<=N,M<=3000).为了关闭整 ...
- P3144 [USACO16OPEN]关闭农场——离线,并查集
https://www.luogu.org/problem/P3144 每次关闭一个农场,农场之间有边相连,问每次关闭后开着的农场是否是一个连通块: 数据小,离线搞: 我们先记录删的顺序,然后倒着来, ...
- 一道并查集的(坑)题:关闭农场closing the farm
题目描述 in English: Farmer John and his cows are planning to leave town for a long vacation, and so FJ ...
- 洛谷——P2919 [USACO08NOV]守护农场Guarding the Farm
P2919 [USACO08NOV]守护农场Guarding the Farm 题目描述 The farm has many hills upon which Farmer John would li ...
- 洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm
题目描述 The farm has many hills upon which Farmer John would like to place guards to ensure the safety ...
- 洛谷—— P2919 [USACO08NOV]守护农场Guarding the Farm
https://www.luogu.org/problem/show?pid=2919 题目描述 The farm has many hills upon which Farmer John woul ...
随机推荐
- LINUX操作系统知识:进程与线程详解
当一个程序开始执行后,在开始执行到执行完毕退出这段时间内,它在内存中的部分就叫称作一个进程. Linux 是一个多任务的操作系统,也就是说,在同一时间内,可以有多个进程同时执行.我们大家常用的单CPU ...
- 数据结构学习-BST二叉查找树 : 插入、删除、中序遍历、前序遍历、后序遍历、广度遍历、绘图
二叉查找树(Binary Search Tree) 是一种树形的存储数据的结构 如图所示,它具有的特点是: 1.具有一个根节点 2.每个节点可能有0.1.2个分支 3.对于某个节点,他的左分支小于自身 ...
- Oozie 实战之 Hive
1.编辑job.propertiers nameNode=hdfs://cen-ubuntu.cenzhongman.com:8020 jobTracker=localhost:8032 queueN ...
- 十三、MySQL之IDE工具介绍及数据备份
一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...
- 【转】正则表达式速查表(http://www.jb51.net/shouce/jquery1.82/regexp.html)
正则表达式速查表 字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个向后引用.或一个八进制转义符.例如,“n”匹配字符“n”.“\n”匹配一个换行符.串行“\\”匹配“\”而“\( ...
- curl 编译
curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多种Linux发行版中,并且有DOS和Win32.Win64下的移植版本.支持很多协议:FTP, FTPS, HT ...
- 实现jQuery的$.extend方法
var o1 = { hello : 1, old : 555 }, o2 = { abc : 55555555, hello : 2, fun : function() { alert(111); ...
- 《Cracking the Coding Interview》——第2章:链表——题目5
2014-03-18 02:32 题目:给定两个由单链表表示的数字,返回它们的和.比如(9->9) + (1->2) = 0->2->1,99 + 21 = 120. 解法:逐 ...
- 【Luogu P2257】YY 的 GCD
题目 求: \[ \sum_{i = 1}^n \sum_{j = 1}^m [\gcd(i, j) \in \mathbb P] \] 有 \(T\) 组数据, \(T\le 10^4, n, m\ ...
- maven的一些使用配置!
1.国外库太慢,更换为国内镜像库在你的maven安装目录下找到conf目录下的setting.xml修改:<mirrors> <id>CN</id> <nam ...