【[POI2012]TOU-Tour de Byteotia】
【[POI2012]TOU-Tour de Byteotia】
洛谷P3535
https://www.luogu.org/problemnew/show/P3535
JDOJ 2193旅游景点(同类题目)
https://neooj.com/oldoj/problem.php?id=2193
知识点:并查集判环
ps:首先声明一下,这题我只得了20分,但是检查了好多遍代码发现没有问题,看了大佬的题解发现他也得了20分,那就是洛谷数据点有问题了(数据范围啥的都没给还想过?)
所以大家不要纠结分数,把这个东西弄好了才是最重要的。
并查集有连通性,其很重要的一个用处就是判环,这个判环用法不仅在一些并查集题中很常见,并且在kruskal算法做MST的时候也是必会用法。
其原理很简单,如果一个点的父亲节点和另一个点的父亲节点是相同的,那么就可以判定出现了一个环。
然后针对于本题,正解思路如下:
不难想到,如果两个点都>k的话,这个边就没有可能被删除。 所以我们只需要先把x,y都>k的边放进并查集,然后再枚举其他<=k的边,如果发现x,y根节点相同,那就累加ans,如果没有的话就不需要删除,加到并查集里。
TALK LESS , LET ME SHOW YOU
#include<cstdio>
#define N 100010
using namespace std;
int fa[N],x[N<<],y[N<<];
int n,m,k,ans;
int find(int x)
{
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
void unionn(int x,int y)
{
int fx=find(x);
int fy=find(y);
if(fx!=fy)
fa[fx]=fy;
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)
fa[i]=i;
for(int i=;i<=m;i++)
{
scanf("%d%d",&x[i],&y[i]);
if(x[i]>k && y[i]>k)
unionn(x[i],y[i]);
}
for(int i=;i<=m;i++)
{
if(x[i]<=k || y[i]<=k)
{
if(find(x[i])==find(y[i]))
ans++;
else
unionn(x[i],y[i]);
}
}
printf("%d",ans);
return ;
}
【[POI2012]TOU-Tour de Byteotia】的更多相关文章
- 【BZOJ3060】[Poi2012]Tour de Byteotia 并查集
[BZOJ3060][Poi2012]Tour de Byteotia Description 给定一个n个点m条边的无向图,问最少删掉多少条边能使得编号小于等于k的点都不在环上. Input ...
- 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 包含关键点的环中 包含从关键点连出的两条边 考虑我们删边删哪些边更优 根 ...
- BZOJ 3060: [Poi2012]Tour de Byteotia 并查集
前 $k$ 个节点形成的结构必定是森林,而 $[k+1,r]$ 之间肯定是都连上,而剩下的一个在 $[1,k],$一个在 $[k+1,r]$ 的节点就能连多少连多少即可. Code: #include ...
- [bzoj3060][Poi2012]Tour de Byteotia_并查集
[Poi2012]Tour de Byteotia 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3060 题解: 这类题有一个套路,就是 ...
- [POI2012]Tour de Bajtocja
[POI2012]Tour de Bajtocja 题目大意: 给定一个\(n(n\le10^6)\)个点\(m(m\le2\times10^6)\)条边的无向图,问最少删掉多少条边能使得编号小于等于 ...
- 【Lucene3.6.2入门系列】第03节_简述Lucene中常见的搜索功能
package com.jadyer.lucene; import java.io.File; import java.io.IOException; import java.text.SimpleD ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- HTML5实现全屏API【进入和退出全屏】
现在主流浏览器基本上实现了全屏效果,但是不同浏览器实现不一样: [进入和退出全屏] // Webkit (works in Safari5.1 and Chrome 15)element.webkit ...
随机推荐
- Java总结转载,持续更新。。。
1.Java中内存划分 https://www.cnblogs.com/yanglongbo/p/10981680.html
- 面向对象程序设计(JAVA) 第15周学习指导及要求
2019面向对象程序设计(Java) 第15周学习指导及要求(2019.12.6-2019.12.13) 学习目标 (1) 掌握菜单组件用途及常用API: (2) 掌握对话框组件用途及常用API: ...
- 第五章 与HTTP协作的Web服务器
第五章 与HTTP协作的Web服务器 一台Web服务器可搭建多个独立域名的Web网站,也可以作为通信路径上的中转服务器提升传输效率. 1.用单台虚拟机实现多个域名 HTTP/1.1规范允许一台HTT ...
- 新工具解决消息丢失的bug
最近在调查一个消息丢失的bug,所幸客户的文本文件里有丢失的记录,但在localdb文件里找不到. 我当时的想法是,在运行report的时候把丢失的记录从文本文件找出来,然后添加到localdb里,最 ...
- php获取url中的参数
// 获取url参数值function is_set_param($param){ $current_url = $_SERVER["QUERY_STRING"]; $arr = ...
- hibernate的对象/关系映射结果为空,exists查不到值的问题-20190823
1: hibernate的对象/关系映射 情景:在使用@onetotone/@manytonone时关联结果为空 原因:在使用这个注解的时候,默认的时crossjoin(交叉连接),在进行查询时以及排 ...
- 转载:ubuntu下编译安装nginx及注册服务
原文地址:https://www.cnblogs.com/EasonJim/p/7806879.html 安装gcc g++的依赖库 sudo apt-get install build-essent ...
- C#数组3(可变数组)
using System; namespace class1 { class program { static void Main(string[] args) { ][];//这里的行必须定义好,但 ...
- swift之NSDate
在通常项目中一般用的最多的情况就是获取日期并格式化. 1.只需要小时.分钟.秒数时个人觉得使用以下代码 let dateFormater = NSDateFormatter() dateFormate ...
- Android开发总体布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...