hdu1233 还是畅通工程(Prim备忘)

来源:互联网 发布:js水泥基防水涂料价格 编辑:程序博客网 时间:2024/06/02 09:58
#include <cstdio>#include<cstring>int road[102][102],key[102];const int M=0x7fffffff;bool s[102];int min(int a,int b){    return a<b?a:b;}int prim(int n){    int i;    memset(s,false,sizeof(s));    for(i=1;i<=n;i++)    key[i]=M;    int cur(1),m,p,cost=0;    s[1]=true;    for(int j=1;j<n;j++)    {        m=M;        for(i=2;i<=n;i++)        {            if(s[i]==false)            {                key[i]=min(key[i],road[cur][i]);                if(m>key[i])                {                    m=key[i];                    p=i;                }            }        }        cur=p;        s[cur]=true;    }    for(i=2;i<=n;i++)    cost+=key[i];    return cost;}int main(){    int n,i;    while(scanf("%d",&n),n)    {        memset(road,-1,sizeof(road));        int m=n*(n-1)/2;        for(i=1;i<=m;i++)        {            int a,b,c;            scanf("%d%d%d",&a,&b,&c);            road[a][b]=road[b][a]=c;        }        printf("%d\n",prim(n));    }    return 0;}

原创粉丝点击