JZOJsenior4740.【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划
Description
Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫。
为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木桩之间绕上藩篱以困住这些猫。
一段时间后,Zjr506在绕了M个藩篱后兴高采烈的离开了。作为正义的使者,Ztxz16不忍心看到这些猫受到折磨,于是决定拆除一些藩篱让所有的猫都逃出去。因为Zjr506的巧妙设计,藩篱不会在除木桩之外的地方相交。这些藩篱构成了一些封闭的区域,每一个区域中都有一只猫。
因为Zjr506制造这些藩篱也不容易,所以Ztxz16希望拆除的藩篱总长度尽量小,现在他希望你告诉他最小的总长度。
Input
第一行两个数 n,m ( 2<=n<=10000 , 1<=m<=50000 )
接下来 n 行 , 每行两个整数 xi,yi, 代表第 i 个木桩的坐标 ( − 10000 ≤ xi, yi ≤ 10000).
接下来 m 行,每行两个整数 pi,qi (1 ≤ pj, qj ≤ N) , 代表木桩 pi 与木桩 qi 之间有一个藩篱。
Output
输出一个实数代表答案,当答案与标准答案差的绝对值不超过0.001时认为它是正确的。
Sample Input
8 8
0 0
3 0
3 3
0 3
1 1
1 2
2 2
2 1
1 2
2 3
3 4
4 1
5 6
6 7
7 8
8 5
Sample Output
4.000000000
Data Constraint
对于20%的数据:
N , M <= 30
对于30%的数据:
N, M <= 300
对于100%的数据:
N <= 10000, M <= 50000
思路:
我们先换个思路来理解这道题目
YY一下一个封闭牛圈,木桩看成点,篱笆看成边,既然他是要封闭的,那么他肯定是一个环,对吧?
现在我们去掉任意一条边,他就不是一个环而是一棵树了
题目要保证一定保证整幅图没有环(有环里面就有猫),我们就不能让这个图出现环
那这道题就是一道裸的MST……
只不过和MST不同的是,这里要删掉的边最短,所以是求最大生成树而已
用kruskal搞最大生成树,判断环用并查集
如果当前边连接x和y,而x的祖先和y的祖先相同,那再连就会有环出现,当前边不选
比较简单,那就AC吧
代码:
varx,y,father:array[0..10000]of longint;a:array[0..50000]ofrecorddis:extended;x,y:longint;end;n,m,i,j,k,l,r:longint;ans:extended;
procedure qsort(l,r:longint);
vari,j:longint;mid:extended;
begini:=l;j:=r;mid:=a[(l+r)shr 1].dis;repeatwhile a[i].dis>mid do inc(i);while a[j].dis<mid do dec(j);if i<=j thenbegina[0]:=a[i];a[i]:=a[j];a[j]:=a[0];inc(i);dec(j);end;until i>j;if l<j then qsort(l,j);if i<r then qsort(i,r);
end;
function getfather(x:longint):longint;
beginif father[x]=x then exit(x);father[x]:=getfather(father[x]);exit(father[x]);
end;
beginreadln(n,m);for i:=1 to n do readln(x[i],y[i]);for i:=1 to m dobeginreadln(l,r);a[i].x:=l;a[i].y:=r;a[i].dis:=sqrt(sqr(x[l]-x[r])+sqr(y[l]-y[r]));end;qsort(1,m);for i:=1 to n do father[i]:=i;for i:=1 to m dobeginj:=getfather(a[i].x);k:=getfather(a[i].y);if j<>k then father[j]:=kelse ans:=ans+a[i].dis;end;writeln(ans:0:9);
end.
JZOJsenior4740.【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划相关推荐
- JZOJ 4740 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划
Zjr506的捕猫计划 题目大意 给出有nn个点,mm条边的一个图,现在要删掉一些边,使得该图内没有环,问实现目标的最小代价.(代价即为删掉的边的总长度) 数据范围 NN<=1000010000 ...
- 【雅礼联考GDOI2017模拟】Zjr506的捕猫计划
Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫. 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些 ...
- 2017.08.19【NOIP提高组】模拟赛B组 【雅礼联考GDOI2017模拟】Zjr506的捕猫计划
####Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫. 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速 ...
- 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划
Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫. 为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些 ...
- JZOJ4740. 【雅礼联考GDOI2017模拟9.2】Zjr506的捕猫计划(2017.8B组)
https://jzoj.net/senior/#main/show/4740 想法: 答案就是让留下来的边尽量打,等于所有边的长度-没有环的树的长度,所以打一棵最大生成树,如果保证2个点不属于同一棵 ...
- jzoj4739-[雅礼联考GDOI2017模拟9.2]Ztxz16学图论【LCT,树状数组】
正题 题目链接:https://gmoj.net/senior/#main/show/4739 题目大意 nnn个点mmm条边的一张图,qqq次询问一个区间的边可以形成多少连通块. 解题思路 询问按照 ...
- 4020. 【雅礼联考DAY02】Revolution
Description 地图是个矩形的网格. 可以花费一定金钱在一些格子投资. 被投资的格子或者四连通的格子都被投资的话,我就可以获得该格子的收益. 利益最大化是作为商人的基本准则,但这是计算机的任务 ...
- GDOI模拟 Zjr506的捕猫计划
Description Zjr506很喜欢猫,某一天他突然心血来潮,想捕捉学校里活动的猫.为了捕猫,Zjr506在校园中放置了N个木桩,当他见到有猫进入他的狩猎范围后,就会以迅雷不及掩耳的速度在一些木 ...
- 2023联考管综论说文阅卷标准及提分计划:附2010-2022年真题
越是临近黎明,越是黑暗! 距离今年的全国研究生考试只有四十来天,接下来的复习节奏该如何定?对很多考生而言可能已经进入一种混沌状态,不知身在何处.但有一点需要明确,最后的 ...
最新文章
- 云智易获上海CIO联盟“年度物联网云平台技术创新奖”
- 小米云能导入到华为云吗_小米11值得买吗?小米11和华为Mate40、iPhone 12相比,哪款性价比最高?...
- boost::log模块测量转储二进制数据的性能
- Entity Framework 5.0系列之约定配置
- 密码学系列之:IDEA
- android 按钮中断,android – 如何“中断”在AccessibilityService中执行的操作?
- 几个高逼格 Linux 命令!
- NAT原理?代理服务器原理?
- a类怎么引用b类java_Java中A类的数组如何传入B类???急
- 2018想要薪资翻倍?你需要掌握这个技能
- MySQL存储引擎--MYSIAM和INNODB引擎区别
- 关于Kubernetes规划的灵魂N问
- Qt 酷炫动画 PictureFlow
- 虹科解决方案 | 如何快速解决CAN与CAN FD之间通信的问题
- 用u盘进不了pe计算机意外地,u盘装系统启动不了无法进入pe怎么办
- java web如何根据用户使用的浏览器来提示用户更新或更换浏览器
- python利用tcp搭建小的聊天室带文件传输
- OneNET麒麟座应用开发之四:数据上传测试
- Python Set 与 dict
- 精准医学中的深度学习和影像组学