HDOJ 1233

来源:互联网 发布:淘宝怎么举报卖家假货 编辑:程序博客网 时间:2024/06/06 16:37

思路:入门题,求最小生成树; 


#include<stdio.h>#include<string.h>int vis[101],dist[101];int map[101][101];void init(int n){    int i;    memset(vis,0,sizeof(vis));    for(i = 1;i <= n;i ++)        dist[i] = map[1][i];}int main(){    int i,j,n,a,b,len,k,min,sum;    while(~scanf("%d",&n) && n)    {        for(i = 1;i <= (n*(n-1)) >> 1;i ++)        {            scanf("%d%d%d",&a,&b,&len);            map[a][b] = map[b][a] = len;        }        init(n);        vis[1] = 1;        sum = 0;        for(i = 0;i < n;i ++)        {            min = 1 << 30;            for(j = 1;j <= n;j ++)            {                if(!vis[j] && min > dist[j])                {                    min = dist[j];                    k = j;                }            }           vis[k] = 1;           if(min != 1 << 30)              sum += min;           for(j = 1;j <= n;j ++)           {               if(!vis[j] && dist[j] > map[k][j])                    dist[j] = map[k][j];           }        }        printf("%d\n",sum);    }    return 0;}


0 0