标签: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