农夫约翰和他的奶牛准备去旅行,所以约翰想要把他的农场临时关闭。

农场有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的更多相关文章

  1. 洛谷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 ...

  2. 洛谷 P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver

    传送门 题目大意: n个谷仓 ,每次关闭一个谷仓,问剩下没被关闭的谷仓是 否联通. 题解:并查集+倒序处理 代码: #include<iostream> #include<cstdi ...

  3. [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 ...

  4. [USACO16OPEN]关闭农场Closing the Farm_Silver

    题目描述 FJ和他的奶牛们正在计划离开小镇做一次长的旅行,同时FJ想临时地关掉他的农场以节省一些金钱. 这个农场一共有被用M条双向道路连接的N个谷仓(1<=N,M<=3000).为了关闭整 ...

  5. P3144 [USACO16OPEN]关闭农场——离线,并查集

    https://www.luogu.org/problem/P3144 每次关闭一个农场,农场之间有边相连,问每次关闭后开着的农场是否是一个连通块: 数据小,离线搞: 我们先记录删的顺序,然后倒着来, ...

  6. 一道并查集的(坑)题:关闭农场closing the farm

    题目描述 in English: Farmer John and his cows are planning to leave town for a long vacation, and so FJ ...

  7. 洛谷——P2919 [USACO08NOV]守护农场Guarding the Farm

    P2919 [USACO08NOV]守护农场Guarding the Farm 题目描述 The farm has many hills upon which Farmer John would li ...

  8. 洛谷 P2919 [USACO08NOV]守护农场Guarding the Farm

    题目描述 The farm has many hills upon which Farmer John would like to place guards to ensure the safety ...

  9. 洛谷—— P2919 [USACO08NOV]守护农场Guarding the Farm

    https://www.luogu.org/problem/show?pid=2919 题目描述 The farm has many hills upon which Farmer John woul ...

随机推荐

  1. tcl之array操作

  2. Laravel操作上传文件的方法

    1.获取上传的文件 $file=$request->file('file');2.获取上传文件的文件名(带后缀,如abc.png) $filename=$file->getClientOr ...

  3. 学习python第十五天,面向对象

    Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的. 面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集 ...

  4. QToolBox学习笔记

    抽屉控件效果类似于QQ界面 最外面一层叫工具盒QToolBox QToolBox中装的是QGroupBox,分组的盒子 在分组的盒子QGroupBox中装的是QToolButton.

  5. [BZOJ3714]Kuglarz(最小生成树)

    Description 魔术师的桌子上有n个杯子排成一行,编号为1,2,-,n,其中某些杯子底下藏有一个小球,如果你准确地猜出是哪些杯子,你就可以获得奖品.花费\(C_{i,j}\)元,魔术师就会告诉 ...

  6. 缓存(CDN缓存,浏览器(客户端)缓存)

    1.什么是缓存? 缓存是一种数据结构,用于快速查找以及执行的操作结果.因此,如果一个操作执行起来很慢,对于常用的输入数据就可以将操作的结果缓存,并在下次调用该操作时使用缓存的数据. 缓存是一个到处都存 ...

  7. laravel5.5用户认证

    目录 1. 命令 2. 快速认证 2.1 自定义路径 2.2 自定义用户名 2.3 自定义看守器 2.4 自定义验证/存储 2.5 Auth::xx() 2.6 保护路由 2.7 指定看守器 3 手动 ...

  8. pip 代理设置,坑爹的代理继续

    Linux ubuntu 3.2.0-23-generic-pae #36-Ubuntu SMP Tue Apr 10 22:19:09 UTC 2012 i686 i686 i386 GNU/Lin ...

  9. 剑指Offer - 九度1520 - 树的子结构

    剑指Offer - 九度1520 - 树的子结构2013-11-30 22:17 题目描述: 输入两颗二叉树A,B,判断B是不是A的子结构. 输入: 输入可能包含多个测试样例,输入以EOF结束.对于每 ...

  10. USACO Section1.1 Friday the Thirteenth 解题报告

    friday解题报告 —— icedream61 博客园(转载请注明出处) -------------------------------------------------------------- ...