UVa:10034 Freckles
来源:互联网 发布:计算机编程基础 编辑:程序博客网 时间:2024/06/06 03:18
还是最小生成树的问题。
不过这里的边需要自己求。两个循环就可以求出来。
Kruskal算法:
#include <cstdio>#include <iostream>#include <cstdlib>#include <cmath>#include <cstring>#include <algorithm>using namespace std;int father[105];struct Edge{ int u,v; double w;};struct Point{ double x,y;};double Distance(Point &a,Point &b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}bool cmp(Edge a,Edge b){ return a.w<b.w;}int find(int x){ return father[x]<0?x:(father[x]=find(father[x]));}int main(){ int T; scanf("%d",&T); while(T--) { Point p[105]; int n; scanf("%d",&n); for(int i=0;i<n;++i) scanf("%lf%lf",&p[i].x,&p[i].y); Edge e[10005]; int N=0; for(int i=0;i<n-1;++i) for(int j=i+1;j<n;++j) { e[N].u=i; e[N].v=j; e[N].w=Distance(p[i],p[j]); N++; } sort(e,e+N,cmp); memset(father,-1,sizeof(father)); double ans=0; for(int i=0;i<N;++i) { Edge t=e[i]; if(find(t.u)!=find(t.v)) { father[find(t.u)]=find(t.v); ans+=t.w; } } printf("%.2lf\n",ans); if(T) printf("\n"); } return 0;}
Prim算法:
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#define INF 9999999999using namespace std;int main(){ int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); double x[105],y[105]; for(int i=0;i<n;++i) scanf("%lf%lf",&x[i],&y[i]); double e[105][105]; for(int i=0;i<n;++i) for(int j=0;j<n;++j) e[i][j]=e[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])); double mincost[105]; for(int i=0;i<n;++i) mincost[i]=INF; bool used[105]={false}; mincost[0]=0; double res=0; while(1) { int v=-1; for(int i=0;i<n;++i) if(!used[i]&&(v==-1||mincost[i]<mincost[v])) v=i; if(v==-1) break; used[v]=true; res+=mincost[v]; for(int i=0;i<n;++i) mincost[i]=min(mincost[i],e[v][i]); } printf("%.2lf\n",res); if(T) printf("\n"); } return 0;}
- UVa 10034 Freckles
- UVa 10034 Freckles
- UVa 10034 Freckles
- UVA 10034 - Freckles
- UVA:10034 - Freckles
- UVa 10034 - Freckles
- UVa 10034 Freckles 解答
- UVA 10034 - Freckles
- Uva 10034 - Freckles
- UVA 10034 Freckles
- UVa 10034: Freckles
- UVa:10034 Freckles
- Uva - 10034 - Freckles
- UVA - 10034 Freckles
- UVa 10034 - Freckles
- Uva 10034 - Freckles
- UVA 10034 - Freckles
- uva 10034 - Freckles
- Delphi7 编程环境 技巧记录
- 淘宝详情页推广告定投功能 优化关联推荐
- jQuery动画效果笔记
- java.lang.RuntimeException: Canvas: trying to use a recycled bitmap
- Namespace 介绍
- UVa:10034 Freckles
- Android PDFReader
- C++数据结构--全排列
- 阻塞队列
- oracle 数据库运行模式
- Port 8080 required by Tomcat v6.0 Server at localhost is already in use. The server may already be r
- C# implemet interfae events
- PIXELFORMATDESCRIPTOR结构
- hdu1108 最小公倍数