某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。
测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
当N为0时,输入结束,该用例不被处理。
3
1 2 1
1 3 2
2 3 4
4
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5
0
3
5

 代码
代码
 #include<stdio.h>
#include<stdio.h>
 #include<string.h>
#include<string.h>
 #define MAX 1000000
#define MAX 1000000
 #define M 225
#define M 225
 int know[M];
int know[M];
 int min[225];
int min[225];

 int path[M][M]=
int path[M][M]= {0};
{0};
 int p;
int p;
 int prim()
int prim()


 {
{
 int ret=0;
    int ret=0;
 int i,j,k;
    int i,j,k;
 for(i=1;i<=p;i++)
    for(i=1;i<=p;i++)

 
     {
{
 min[i]=66535000;
        min[i]=66535000;
 know[i]=0;
        know[i]=0;
 }
    }
 min[1]=0;
    min[1]=0;
 for(i=1;i<=p;i++)
    for(i=1;i<=p;i++)

 
     {
{
 k=-1;
        k=-1;
 for(j=1;j<=p;j++)
        for(j=1;j<=p;j++)

 
         {
{
 if(!know[j]&&(k==-1||min[j]<min[k]))
            if(!know[j]&&(k==-1||min[j]<min[k]))
 
        
 k=j;
                k=j;
 }
        }
 know[k]=1;
        know[k]=1;
 ret+=min[k];555
        ret+=min[k];555
 for(j=1;j<=p;j++)
        for(j=1;j<=p;j++)
 if(!know[j]&&path[k][j]&&path[k][j]<min[j])
            if(!know[j]&&path[k][j]&&path[k][j]<min[j])
 min[j]=path[k][j];
                min[j]=path[k][j];
 }
    }
 return ret;
    return ret;
 }
}
 int main()
int main()


 {
{
 int n;int i;
    int n;int i;
 int r,a,b,c;
    int r,a,b,c;
 while(scanf("%d",&p)!=EOF&&p!=0)
    while(scanf("%d",&p)!=EOF&&p!=0)

 
     {
{
 
        
 r=p*(p-1)/2;
        r=p*(p-1)/2;
 memset(path,0,sizeof(path));
        memset(path,0,sizeof(path));
 for(i=0;i<r;i++)
        for(i=0;i<r;i++)

 
         {
{
 scanf("%d%d%d",&a,&b,&c);
            scanf("%d%d%d",&a,&b,&c);
 if(!path[a][b]||path[a][b]>c)
            if(!path[a][b]||path[a][b]>c)
 path[a][b]=c;
                path[a][b]=c;
 }
        }
 printf("%d\n",prim());
        printf("%d\n",prim());
 }
    }
 return 0;
    return 0;
 }
}




posted on 2012-07-19 21:01 
天YU地___PS,代码人生  阅读(215) 
评论(0)  编辑  收藏