poj2349
来源:互联网 发布:centos回到根目录 编辑:程序博客网 时间:2024/05/22 15:37
求生成树中s-1短的边。网上说可以用prim算法,我用的是kruskal算法,时间真的惨不忍睹,我怀疑prim会超时。
#include<iostream>#include<algorithm>#include<stdlib.h>#include<string.h>#include<math.h>#include<string>#include<vector>#include<queue>#include<list>using namespace std;typedef long long lld;typedef unsigned int ud;#define Inf INT_MAX//int最大#define Min(x,y) (x)<(y)?(x):(y)#define Max(x,y) (x)>(y)?(x):(y)#define PQ priority_queue#define Q queue#define N 505struct Edge{int u,v;double w;}edge[N*(N-1)/2];int S,P,m;struct Vex{double x,y;}vex[N];int parent[N];double mst_w[N];void InitParent(){for(int i=0;i<P;i++)parent[i]=-1;}int find(int x){return parent[x]<0 ? x : find(parent[x]);}void merge(int r1,int r2){if(parent[r1]>parent[r2]){parent[r1]=r2;parent[r2]-=parent[r1];}else{parent[r2]=r1;parent[r1]-=parent[r2];}}bool cmp(Edge e1,Edge e2){return e1.w<e2.w;}double Kruskal(){sort(edge,edge+m,cmp);InitParent();int k=0;for(int i=0;i<m;i++){int u=find(edge[i].u);int v=find(edge[i].v);if(u!=v){mst_w[k++]=edge[i].w;merge(u,v);if(k==P-1)break;}}return mst_w[k-S];}double GetW(Vex v1,Vex v2){return sqrt((v1.x-v2.x)*(v1.x-v2.x)+(v1.y-v2.y)*(v1.y-v2.y));}int main(){int T;scanf("%d",&T);while(T--){scanf("%d%d",&S,&P);for(int i=0;i<P;i++)scanf("%lf%lf",&vex[i].x,&vex[i].y);m=0;for(int i=0;i<P;i++)for(int j=i;j<P;j++){if(i==j)continue;edge[m].u=i;edge[m].v=j;edge[m++].w=GetW(vex[i],vex[j]);}printf("%.2lf\n",Kruskal());}return 0;}
0 0
- poj2349
- poj2349
- poj2349
- POJ2349+Prim
- POJ2349 (prim)
- poj2349-kruskal
- POJ2349 prim+heap
- poj2349(prim)
- 最小生成树 poj2349
- POJ2349 Arctic Network
- poj2349(最小生成树)
- Kruskal POJ1287 POJ1861 POJ2349
- poj2349 (kruskal算法)
- POJ2349--Arctic Network
- POJ2349最小生成树
- [水]Poj2349 Kruskal
- POJ2349---Arctic Network
- POJ2349,ZOJ1914,Arctic Network
- 解决ListView/GridView重复getView浪费资源问题
- C printf函数中参数执行顺序
- ActiveMQ 分析系列(二)
- ucos-ii示例7:内存管理测试
- 学密码学一定得学程序
- poj2349
- PHP单文件/多文件上传
- Linux网络编程入门
- 同步与异步的概念
- html5标签
- IOS:Ready for sale之后的一些事儿,关于Availability Date
- 安卓应用程序插件化开发框架 -AAP Framework
- nginx配置url重定向-反向代理
- 爬楼梯