poj2349 Kruskal题解
来源:互联网 发布:网络监控光纤收发器 编辑:程序博客网 时间:2024/05/02 02:21
Kruskal:Arctic Network题目大概意思就是给你n个点的坐标,有几个点不用花钱,求最小生成树(不用花钱的)费用.#include<stdio.h>#include<algorithm>#include<string.h>#include<math.h>using namespace std;int x[1001],y[1001],dep;struct Dis{int val,from,to;};Dis dis[2000001];int father[1001],s[1001];int find(int x){if(father[x]!=x)return find(father[x]);return x;}void update(int a,int b){dep--;int fa=find(a);int fb=find(b);if(s[fa]>s[fb])father[fb]=fa,s[fa]+=s[fb];elsefather[fa]=fb,s[fb]+=s[fa];}bool cmp(const Dis &a,const Dis &b){return a.val<b.val;}int main(){int n,k,i,j,q,l;scanf("%d",&q);for(l=1;l<=q;l++){int idx=0;scanf("%d%d",&k,&n);dep=n;for(i=1;i<=n;i++)s[i]=1,father[i]=i;for(i=1;i<=n;i++)scanf("%d%d",&x[i],&y[i]);for(i=1;i<=n;i++)for(j=1;j<i;j++){dis[++idx].val=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);dis[idx].from=i;dis[idx].to=j;}sort(dis+1,dis+idx+1,cmp);for(i=1;i<=idx;i++){if(find(dis[i].from)==find(dis[i].to))continue;update(dis[i].from,dis[i].to);if(dep==k){printf("%.2lf\n",sqrt(double(dis[i].val)));break;}}}}
阅读全文
3 0
- poj2349 Kruskal题解
- poj2349-kruskal
- POJ2349 Arctic Network 题解【最小生成树】【Kruskal】【图论】
- Kruskal POJ1287 POJ1861 POJ2349
- poj2349 (kruskal算法)
- [水]Poj2349 Kruskal
- POJ2349 UVa10369题解
- poj2349 Arctic Network 最小生成树,kruskal
- POJ2349 Arctic Network(最小生成树,Kruskal)
- poj2349
- poj2349
- poj2349
- POJ2349—最小生成树的Kruskal和Prim实现
- POJ2349 Arctic Network Prim+堆(优先队列)、Kruskal(并查集)
- 模拟赛【修路】题解--kruskal
- poj2395 Kruskal题解(Prim好像过不了)
- POJ2349+Prim
- POJ2349 (prim)
- C++多线程学习(一)
- Mac VMware 序列号
- Linux的内存理解
- 环形对列(circle queue 1329 P103)
- maven查询网站
- poj2349 Kruskal题解
- 网易2017内推 [编程题] 交错01串@Java
- lintcode --寻找旋转排序数组中的最小值 II
- Superset搭建
- Java虚拟机对象创建管理与垃圾回收知识整理与分析
- Leetcode算法学习日志-121 Best Time to Buy and Sell Stock
- CVE-2015-2545浅析-word释放重引用漏洞
- Java-JDK动态代理
- NOIP 2000年提高组复赛 单词接龙