现在政府计划在某个区域的城市之间建立高速公路,以使得其中任意两个城市之间都有直接或间接的高速公路相连。费用为每千米为一个单位价格,求最小费用。输人:n(n<=100,表示城市数目)。
接下来n行,每行两个数xi,yi,表示第i个城市的坐标。(单位:千米)输出:最小费用(保留2位小数)。
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn-101;
struct tcity
float x,y;
};
tcity c[maxn];
d[ maxn][maxn],a,minf;floatint p[maxn],n,i,j,k;
int main()
cin>>n;
for(i-l;i<=n;i++)
cin>>c[i].x>>c[i].y;
for(i=l;i<=n;i++)
for(j=1;j<=n;j++)
d[i][j]-(p[1]-0;for(i=2;i<=n;i++)
for(i=l;i<=n-1;i++)
minf=1E10;
for(j=1;j<=n;j++)
if(
minf-d[p[j]][j];
a=a+d[p[k]][k];
p[k]=0;
for(j=1;j<=n;j++)
if( ⑤ )p[j]=k;
printf("%0.2f",a);
return 0;
1处应填
sqrt((c[i].x-c[i].y)*(c[i].x-c[i].y)+(e[j].x-c[j].y)*(e[j].x-c[j]y))
sqrt((c[i].x-c[j].x)*(c[j].x-c[i].x)+(¢[i].y-c[j].y)*(e[j].y-e[i].y))
sqrt((e[i].x-c[j].x)*(œ[i].x-c[j].x)+(c[i].y-c[j].y)*(c[i].y-c[j].y)
sqt((c[i].x-c[i].y)*(c[j].x-c[j].y)+(c[i].x-c[i].y)*(c[j].x-c[j].y));
2处应填
p[i]=1
p[i]=0
p[n-i]=0
p[n-i]=1;
3处应填
p[j]==0 && d[p[j]][j]<minf
p[j]! =0 && d[p[j]][j]<minf
p[j]==0 ll d[p[j]][j]<minf
p[j]! =0 ll d[p[j]][j]<minf
4处应填
k=minf;
k=0
.k=i
k=j
5处应填
d[p[j]][j]>d[k][j]
d[p[j]][j]<d[k][j]
d[p[i]][j]>d[k][j]
d[p[i]][j]<d[k][j]
发表评论