uva 10034 Problem A: Freckles
2014-10-13 18:57
316 查看
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=975
最小生成树。
View Code
最小生成树。
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define maxn 1000 using namespace std; const double inf=(double)(1<<29); int t,n; struct node { double x,y; }p[maxn]; bool vis[maxn]; double dis[maxn]; double g[maxn][maxn]; double ans; double sqr(double x) { return x*x; } void prim() { memset(vis,false,sizeof(vis)); for(int i=1; i<=n; i++) dis[i]=g[1][i]; dis[1]=0; vis[1]=true; for(int i=1; i<n; i++) { double m=inf; int x; for(int y=1; y<=n; y++) if(!vis[y]&&dis[y]<m) m=dis[x=y]; ans+=m; vis[x]=true; for(int y=1; y<=n; y++) if(!vis[y]&&dis[y]>g[x][y]) dis[y]=g[x][y]; } } int main() { scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1; i<=n; i++) { scanf("%lf%lf",&p[i].x,&p[i].y); } for(int i=1; i<=n; i++) { for(int j=i; j<=n; j++) { if(i==j) g[i][j]=0; else g[i][j]=g[j][i]=sqrt(sqr(p[i].x-p[j].x)+sqr(p[i].y-p[j].y)); } } ans=0; prim(); printf("%.2lf\n",ans); if(t) printf("\n"); } return 0; }
View Code
相关文章推荐
- uva 10034 - Freckles
- uva 10034 Freckles
- UVa 10034 Freckles (MST & 稠密图的O(V^2)的Prim算法)
- UVA 10034 - Freckles
- UVa 10034: Freckles
- UVa10034 Freckles
- UVA 10034 Freckles
- UVA 10034 - Freckles(最小生成树)
- UVa10034/POJ2560_Freckles(最小生成树)(小白书图论专题)
- UVa 10034 - Freckles (最小生成树模板题)
- UVa 10034 Freckles 解答
- uva 10034 Freckles 最小生成树
- UVa 10034 Freckles (最小生成树+kruskal)
- UVa 10034 - Freckles
- uva 10034【Freckles】
- UVa10034 Freckles
- uva10034 Freckles
- UVA 10034 - Freckles
- UVa 10034 Freckles
- UVa 10034 Freckles