标签:des style blog http color 使用 os io
解题报告
题意:
把所有点连起来,求使用的墨水最少。
思路:
裸最小生成树。
#include <iostream> #include <cstring> #include <cstdio> #include <cmath> #define inf 0x3f3f3f3f using namespace std; struct N { double x,y; } node[110]; int vis[110],n; double mmap[110][110],dis[110]; double disc(N a,N b) { return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); } void prim() { int u; double minn,ans=0; for(int i=0; i<n; i++) { dis[i]=mmap[0][i]; vis[i]=0; } dis[0]=0; vis[0]=1; for(int i=0; i<n-1; i++) { minn=(double)inf; for(int j=0; j<n; j++) { if(!vis[j]&&dis[j]<minn) { minn=dis[j]; u=j; } } vis[u]=1; ans+=minn; for(int j=0; j<n; j++) { if(!vis[j]&&mmap[u][j]<dis[j]) { dis[j]=mmap[u][j]; } } } printf("%.2lf\n",ans); } int main() { int t,i,j; // scanf("%d",&t); // while(t--) { scanf("%d",&n); for(i=0; i<n; i++) { scanf("%lf%lf",&node[i].x,&node[i].y); } for(i=0; i<n; i++) { for(j=0; j<n; j++) { mmap[i][j]=mmap[j][i]=disc(node[i],node[j]); } } prim(); // if(t)printf("\n"); // } return 0; }
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 7004 | Accepted: 3448 |
Description
Input
Output
Sample Input
3 1.0 1.0 2.0 2.0 2.0 4.0
Sample Output
3.41
Source
UVa10034/POJ2560_Freckles(最小生成树)(小白书图论专题),布布扣,bubuko.com
UVa10034/POJ2560_Freckles(最小生成树)(小白书图论专题)
标签:des style blog http color 使用 os io
原文地址:http://blog.csdn.net/juncoder/article/details/38677427