读书人

HDOJ 1233 仍是畅通工程

发布时间: 2012-08-10 12:19:33 作者: rapoo

HDOJ 1233 还是畅通工程

实在伤心,一口气A了三个畅通工程,太简单的原因把。这个畅通工程求的是最小的公路长度,就是最小生成树,点太少无向图,prim就好了。

#include<stdio.h>#include<string.h>int map[100][100],d[100],n; bool v[100];int Prim(){    int i,j,mim,pt,ret;    memset(d,0x7f,sizeof(d));    memset(v,false,sizeof(v));    pt=1;  v[1]=true;  ret=0;    while( true){           for( i=1; i<=n; i++)                 if( !v[i]&&map[pt][i]&&d[i]>map[pt][i])                    d[i]=map[pt][i];             pt=-1; mim=0x7fffffff;           for( i=1; i<=n; i++){                if( !v[i]&&mim>d[i] ){                    mim=d[i];                    pt=i;                }           }                 if( pt==-1) break;           ret+=mim; v[pt]=true;    }    return ret;}int main(){    int m,i,j,c;    while( scanf("%d",&n)&&n){           m=n*(n-1)/2;           memset(map,0,sizeof(map));           while( m--){                  scanf("%d%d%d",&i,&j,&c);                  map[i][j]=c;                  map[j][i]=c;           }            printf("%d\n",Prim());    }    return 0;}


读书人网 >编程

热点推荐