ZOJ 1914 Arctic Network 最小生成树
来源:互联网 发布:郭靖 知乎 编辑:程序博客网 时间:2024/06/10 10:49
最小生成树,已经开通s条。用并查集实现
#include<iostream>#include<cstdio>#include<string.h>#include<algorithm>#include<cmath>using namespace std;#define inf 0x3f3f3f3fconst int N=502;int father[N],x[N],y[N],cnt;struct node{int x,y;double d;}e[N*N];int find(int v){if(father[v]!=v)father[v]=find(father[v]);return father[v];}double calc(int i,int j){double rst=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);return sqrt(rst);}int cmp(node a,node b){return a.d<b.d;}int main(){int tt,s,p;for(cin>>tt;tt>0;tt--){//s个点有cin>>s>>p;for(int i=0;i<=p;i++)father[i]=i;int u,v;for(int i=1;i<=p;i++)scanf("%d %d",&x[i],&y[i]);cnt=0;for(int i=1;i<=p;i++)for(int j=i+1;j<=p;j++)e[cnt].x=i,e[cnt].y=j,e[cnt++].d=calc(i,j);sort(e,e+cnt,cmp);int tot=p-1-s;double ans=0;for(int i=0;i<cnt;i++){u=find(e[i].x),v=find(e[i].y);//printf("%.2lf--%d %d\n",e[i].d,u,v);if(u!=v){father[u]=v;ans=max(ans,e[i].d);if(tot--==0)break;}}printf("%.2lf\n",ans);}return 0;}
0 0
- ZOJ 1914 Arctic Network 最小生成树
- zoj 1914 Arctic Network(最小生成树))
- POJ 2349&&ZOJ 1914 Arctic Network(kuangbin带你飞 专题六:最小生成树)
- zoj 1914 || poj 2349 Arctic Network【最小生成树 kruskal && prim】
- POJ 2349 Arctic Network [最小生成树]
- uva 10369 - Arctic Network(最小生成树)
- poj 2349 (最小生成树)Arctic Network
- UVA 10369 - Arctic Network(最小生成树)
- POJ-2349 Arctic Network 最小生成树
- poj2349 Arctic Network 最小生成树,kruskal
- Uva 10369 Arctic Network 最小生成树
- POJ 2349 Arctic Network 最小生成树
- poj-2349 Arctic Network 最小生成树
- acm-Arctic Network(最小生成树)
- poj 2349 Arctic Network 最小生成树
- POJ2349&ZOJ1914--Arctic Network【最小生成树】
- poj2349 Arctic Network(最小生成树)
- [poj2349 Arctic Network]最小生成树
- Shell性能调优
- 非递归中序遍历二叉树-代码实例讲解
- Linux目录磁盘操作命令
- java.lang.String.format之使用
- windows消息机制
- ZOJ 1914 Arctic Network 最小生成树
- CreateEvent
- Unable to install breakpoint in
- hdu 3501 Calculation 2
- Android提高第二篇之SurfaceView的基本使用
- ╭*★*╯浮华一场烟雨梦,叶落无痕情无踪╭*★*╯
- 开通博客啦
- JdbcTemplate详解
- 排序大集合