【BZOJ3060】[Poi2012]Tour de Byteotia 并查集
【BZOJ3060】[Poi2012]Tour de Byteotia
Description
Input
Output
Sample Input
1 2
1 3
1 5
3 5
2 8
4 11
7 11
6 10
6 9
2 3
8 9
5 9
9 10
Sample Output
HINT
数据范围:
对于100%的数据满足:1 ≤ n ≤ 1,000,000,1 ≤ m ≤ 2,000,000,1 ≤ k ≤ n。
题解:先不考虑编号<=k的条件,因为你无论如何也不能通过删掉一条边而干掉2个环(这里指不能用其他环拼一拼得到的环),所以答案显然就是m-n+有环的连通块数量,直接用并查集搞。
那如果考虑<=k的条件呢?我们可以先将两段编号都>k的边先塞到并查集里去,出现环时不更新答案,然后在加剩下的边,出现环时ans++,就没了~
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int maxn=1000010;
int f[maxn],pa[maxn<<1],pb[maxn<<1];
int n,m,k,ans;
int find(int x)
{
return (f[x]==x)?x:(f[x]=find(f[x]));
}
int main()
{
int i,a,b;
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++) f[i]=i;
for(i=1;i<=m;i++)
{
scanf("%d%d",&a,&b),pa[i]=a,pb[i]=b;
if(a<=k||b<=k) continue;
if(find(a)!=find(b)) f[f[a]]=f[b];
}
for(i=1;i<=m;i++)
{
a=pa[i],b=pb[i];
if(a>k&&b>k) continue;
if(find(a)!=find(b)) f[f[a]]=f[b];
else ans++;
}
printf("%d",ans);
return 0;
}
【BZOJ3060】[Poi2012]Tour de Byteotia 并查集的更多相关文章
- [bzoj3060][Poi2012]Tour de Byteotia_并查集
[Poi2012]Tour de Byteotia 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3060 题解: 这类题有一个套路,就是 ...
- BZOJ 3060: [Poi2012]Tour de Byteotia 并查集
前 $k$ 个节点形成的结构必定是森林,而 $[k+1,r]$ 之间肯定是都连上,而剩下的一个在 $[1,k],$一个在 $[k+1,r]$ 的节点就能连多少连多少即可. Code: #include ...
- Bzoj3060 [Poi2012]Tour de Byteotia
3060: [Poi2012]Tour de Byteotia Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 251 Solved: 161 Des ...
- bzoj 3060[Poi2012]Tour de Byteotia 贪心+生成树
Description 给定一个n个点m条边的无向图,问最少删掉多少条边能使得编号小于等于k的点都不在环上. Analysis 包含关键点的环中 包含从关键点连出的两条边 考虑我们删边删哪些边更优 根 ...
- 【[POI2012]TOU-Tour de Byteotia】
[[POI2012]TOU-Tour de Byteotia] 洛谷P3535 https://www.luogu.org/problemnew/show/P3535 JDOJ 2193旅游景点(同类 ...
- [POI2012]Tour de Bajtocja
[POI2012]Tour de Bajtocja 题目大意: 给定一个\(n(n\le10^6)\)个点\(m(m\le2\times10^6)\)条边的无向图,问最少删掉多少条边能使得编号小于等于 ...
- 2018.09.25 codeforces1053E. Euler tour(并查集+st表+模拟)
传送门 毒瘤细节题. 首先考虑不合法的情况. 先把相同的值配对,这样就构成了一些区间. 那么如果这些区间有相交的话,就不合法了. 如何判断?DZYO安利了一波st表,我觉得很不错. 接着考虑两个相同的 ...
- hdu 3461 Code Lock(并查集)2010 ACM-ICPC Multi-University Training Contest(3)
想不到这还可以用并查集解,不过后来证明确实可以…… 题意也有些难理解—— 给你一个锁,这个所由n个字母组成,然后这个锁有m个区间,每次可以对一个区间进行操作,并且区间中的所有字母要同时操作.每次操作可 ...
- CodeForces 755C PolandBall and Forest (并查集)
题意:给定每一点离他最远的点,问是这个森林里有多少棵树. 析:并查集,最后统计不同根结点的数目即可. 代码如下: #pragma comment(linker, "/STACK:102400 ...
随机推荐
- hdu 1283 最简单的计算机
水题. .. import java.util.Scanner; public class Main { static int m1, m2; static int r1, r2, r3; publi ...
- 关于BufferedInputStream和BufferedOutputStream的实现原理的理解
在介绍FileInputStream和FileOutputStream的例子中,使用了一个byte数组来作为数据读入的缓冲区,以文件存取为例,硬盘存取的速度远低于内存中的数据存取速度.为了减少对硬盘的 ...
- 16个Linux服务器监控命令
在不同的Linux发行版中,会有不同的GUI程序可以显示各种系统信息,比如SUSE linux发行版中,就有非常棒的图形化的配置和管理工具YaST,KDE桌面环境里的KDE System Guard也 ...
- 机器学习&深度学习资料(转载)
转自 飞鸟各投林 <Brief History of Machine Learning> 介绍:这是一篇介绍机器学习历史的文章,介绍很全面,从感知机.神经网络.决策树.SVM.Adaboo ...
- IntelliJ IDEA 取消控制台行数限制
在idea7之后的版本中取消了 控制台行数设置 选项,只能通过更改配置文件进行更改 在%安装目录%/bin中找到idea.properties文件,更改idea.cycle.buffer.size项值 ...
- HDFS删除并清空回收站
删除文件并放入回收站: hdfs dfs -rm -f /path 删除文件不放入回收站: hdfs dfs -rm -f -skipTrash /path 清空回收站: hdfs dfs -expu ...
- zabbix监控php-fpm
1.启用php-fpm的状态功能 [root@web01 ~]# vim /etc/php-fpm.d/www.conf 121 pm.status_path = /php_status [root@ ...
- react-native 项目实战 -- 新闻客户端(4) -- 请求网络数据
1.Home.js /** * 首页 */ import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Te ...
- java 中的 i++ 和 ++i
熟悉c/c++中的i++和++i,那么你知道下面的java代码效果是什么吗? 一 . 代码示例 /** * * @author elelule * */ public class TestPlusPl ...
- 读书报告之《改动代码的艺术》 (I)
<改动代码的艺术>,英文名<Working Effectively with Legacy Code>,中文翻译的文笔上绝对谈不上"艺术"二字.愧对艺术二字 ...