当前位置:编程学习 > C/C++ >>

九度教程第71题

C语言源码:
[cpp]  
#include<stdio.h>  
#include<limits.h>  
#define maxsize 100  
int main()  
{  
    int s[maxsize][maxsize],is[maxsize][2],n,a,b,len,i,j,min,fmin,f;  
    scanf("%d",&n);  
    while(n)  
    {  
        for(i=0;i<n;i++)  
        {  
            is[i][0]=0;  
            is[i][1]=INT_MAX;  
            for(j=0;j<n;j++)  
                s[i][j]=INT_MAX;  
        }  
        for(i=0;i<n*(n-1)/2;i++)  
        {  
            scanf("%d %d %d",&a,&b,&len);  
            s[a-1][b-1]=len;  
            s[b-1][a-1]=len;  
        }  
        is[0][0]=1;  
        len=0;  
        i=1;  
        fmin=0;  
        min=INT_MAX;  
        while(i<n)  
        {  
            for(j=0;j<n;j++)  
                if(is[j][0]==0)  
                {  
                    if(s[fmin][j]<is[j][1])  
                        is[j][1]=s[fmin][j];  
                    if(is[j][1]<min)   
                    {  
                        f=j;  
                        min=is[j][1];  
                    }  
                }  
                fmin=f;  
                is[fmin][0]=1;  
                len+=min;  
                min=INT_MAX;  
                i++;  
        }  
        printf("%d\n",len);  
        scanf("%d",&n);  
    }  
}  
 
 
补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,