您的位置:首页 > 其它

hdu 1162

2013-11-10 15:54 169 查看
#include<stdio.h>

#include<string.h>

#include<math.h>

#define N 200

#define inf 999999999

double map

;

int visit
,next
;

int main() {

int n,m,i,j,k,cnt;

double a
,b
,dis,min;

while(scanf("%d",&n)!=EOF) {

for(i=1;i<=n;i++)

scanf("%lf%lf",&a[i],&b[i]);

for(i=1;i<n;i++)

for(j=i+1;j<=n;j++)

map[i][j]=map[j][i]=sqrt((a[i]-a[j])*(a[i]-a[j])+(b[i]-b[j])*(b[i]-b[j]));

memset(visit,0,sizeof(visit));

visit[1]=1;

next[0]=1;

cnt=1;dis=0;

while(cnt!=n) {

min=inf;

for(i=0;i<cnt;i++)

for(j=1;j<=n;j++)

if(visit[j]==0&&map[next[i]][j]<min) {

min=map[next[i]][j];

next[cnt]=j;

}

dis+=min;

visit[next[cnt]]=1;

cnt++;

}

printf("%.2f\n",dis);

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: