标签:des java os io for ar div 代码
3 1.0 1.0 2.0 2.0 2.0 4.0
3.41
#include <stdio.h>
#include <math.h>
#include <string.h>
const int maxnum = 105;
const int maxint = 999999;
double dist[maxnum];
double prev[maxnum];
double c[maxnum][maxnum];
double ju(double x1,double x2,double y1,double y2)
{
return sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
}
void dijkstra(int n,int v)
{
bool s[maxnum];
for(int i=1;i<=n;i++)
{
s[i] = 0;
dist[i] = c[v][i];
}
s[v] = 1;
for(int i = 2; i<=n; i++)
{
int u=v;
double temp = maxint;
for(int j = 1; j<=n; j++)
{
if(!s[j]&&dist[j]<temp)
{
temp = dist[j];
u = j;
}
}
s[u] = 1;
for(int j = 1; j<=n; j++)
{
if(!s[j])
{
double newdist = dist[j] + c[u][j];
if(newdist<c[u][j])
{
dist[j] = newdist;
}
}
}
}
}
int main()
{
int n;
double x[105],y[105];
while(scanf("%d",&n)!=EOF)
{
for(int i=1;i<=n;i++)
{
scanf("%lf%lf",&x[i],&y[i]);
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
c[i][j] = ju(x[i],x[j],y[i],y[j]);
c[j][i] = c[i][j];
}
c[i][i] = 0;
}
dijkstra(n,1);
printf("%.2lf\n",dist[n]);
}
}
为什么结果不正确?
hdoj (1162) 最小生成树,布布扣,bubuko.com
标签:des java os io for ar div 代码
原文地址:http://www.cnblogs.com/weiyikang/p/3909480.html