P3144 [USACO16OPEN]关闭农场——离线,并查集
https://www.luogu.org/problem/P3144
每次关闭一个农场,农场之间有边相连,问每次关闭后开着的农场是否是一个连通块;
数据小,离线搞;
我们先记录删的顺序,然后倒着来,先将所有删去的点都标记,每次加点,再把所有没删的都加在一起,
in_class[i]==1表示这个点在农场里;
我们从一个删点的过程变成一个加点的过程;
因为在第n次点都删完了,所以一定是一个连通块(体积为0);
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int n,m;
int father[maxn];
int xx[maxn],yy[maxn];
int getfather(int x)
{
if(father[x]==x) return x;
father[x]=getfather(father[x]);
return father[x];
}
int in_class[maxn];
int delete_order[maxn]; void merge(int x,int y)
{
int fx=getfather(x);
int fy=getfather(y);
if(father[fx]!=fy)
{
father[fx]=fy;
}
}
int num_block[maxn];
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&xx[i],&yy[i]);
}
for(int i=;i<=n;i++)
{
int w;
scanf("%d",&w);
delete_order[i]=w;
in_class[w]=;
father[i]=i;
}
for(int i=n;i>=;i--)
{
in_class[delete_order[i]]=;
for(int j=;j<=m;j++)
{
if(in_class[xx[j]]==&&in_class[yy[j]]==)
{
merge(xx[j],yy[j]);
}
}
for(int j=;j<=n;j++)
{
if(in_class[j]==&&getfather(j)==j)
{
num_block[i]++;
}
}
}
for(int i=;i<n;i++)
{
if(num_block[i]==) printf("YES\n");
else printf("NO\n");
}
printf("YES\n");
return ;
}
P3144 [USACO16OPEN]关闭农场——离线,并查集的更多相关文章
- 洛谷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
农夫约翰和他的奶牛准备去旅行,所以约翰想要把他的农场临时关闭. 农场有N个牛棚(牛棚从1到N编号),有M条路连接这些牛棚(1≤N,M≤3000). 约翰打算挨个关闭牛棚,在关牛棚的时候, 他突然想起一 ...
- 洛谷 P3144 [USACO16OPEN]关闭农场Closing the Farm_Silver
传送门 题目大意: n个谷仓 ,每次关闭一个谷仓,问剩下没被关闭的谷仓是 否联通. 题解:并查集+倒序处理 代码: #include<iostream> #include<cstdi ...
- [bzoj1015](JSOI2008)星球大战 starwar(离线+并查集)
Description 很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武 器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通 ...
- ACM学习历程—Hihocoder 1291 Building in Sandbox(dfs && 离线 && 并查集)
http://hihocoder.com/problemset/problem/1291 前几天比较忙,这次来补一下微软笔试的最后一题,这题是这次微软笔试的第四题,过的人比较少,我当时在调试B题,没时 ...
- HDU5441 Travel 离线并查集
Travel Problem Description Jack likes to travel around the world, but he doesn’t like to wait. Now, ...
- [USACO18FEB] Snow Boots G (离线+并查集)
题目大意:略 网上各种神仙做法,本蒟蒻只想了一个离线+并查集的做法 对所有靴子按最大能踩的深度从大到小排序,再把所有地砖按照积雪深度从大到小排序 一个小贪心思想,我们肯定是在 连续不能踩的地砖之前 的 ...
- [USACO16OPEN]关闭农场Closing the Farm_Silver
题目描述 FJ和他的奶牛们正在计划离开小镇做一次长的旅行,同时FJ想临时地关掉他的农场以节省一些金钱. 这个农场一共有被用M条双向道路连接的N个谷仓(1<=N,M<=3000).为了关闭整 ...
- 【杭电OJ3938】【离线+并查集】
http://acm.hdu.edu.cn/showproblem.php?pid=3938 Portal Time Limit: 2000/1000 MS (Java/Others) Memo ...
随机推荐
- springcloud 1.5 与 springcloud 2.0 配置区别
eureka配置区别: 1.5:${spring.cloud.client.ipAddress}:${server.port} 2.0:${spring.cloud.client.ip-address ...
- Jquery DataTables 服务器后端分页 Ajax请求添加自定义参数.
项目使用AdminLTE(基于Bootstrap 二次开发的框架)作为开发框架. 使用DataTables 的时候部分页面需要传参 给后台做筛选过滤. 但是不知道怎么将DataTables的参数 和自 ...
- HTTP抓包实战
HTTP:超文本传输协议 允许将HTTP文档从Web服务器传送到客户端的浏览器.HTTP请求报文分为3部分.第一部分叫做起始行(Request line).第二部分叫首部(Request Header ...
- 你听过稀疏数组(sparseArray)吗?
稀疏数组(sparseArray) 基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组. 稀疏数组的处理方法是: 1.记录数组一共有几行几列,有多少个不同的值 ...
- requests模块的基本用法
requests 什么是requests模块 python中封装好的一个基于网络请求的模块 作用 用来模拟浏览器发送请求 环境安装 pip install requests 编码流程 指定 url 发 ...
- UI5-技术篇-Implementing Expand Entity/Entity Set
转载:https://blogs.sap.com/2014/07/18/implementing-expand-entityentity-set/ Requirement Considering a ...
- shopxo代码审计
由于工作原因,分析了很多的cms也都写过文章,不过觉得好像没什么骚操作都是网上的基本操作,所以也就没发表在网站上,都保存在本地.最近突然发现自己博客中实战的东西太少了,决定将以前写的一些文章搬过来,由 ...
- SVN限制IP访问
转自:https://www.cnblogs.com/wjlkingwjl/p/4630764.html 需求 SVN是放在公网的,需要特别指定公司的IP才能获取操作. 操作 在安装完Visual S ...
- html流程实现
https://blog.csdn.net/github_39335046/article/details/73930886 https://www.cnblogs.com/xcj26/p/98707 ...
- python selenium测试用例断言
1.if ...else ...判断进行断言 #coding=utf-8 from time import * from selenium import webdriver "): driv ...