HDU 1233还是畅通工程

来源:互联网 发布:腾讯视频mac版有吗 编辑:程序博客网 时间:2024/06/03 20:46

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1233

prim算法:

#include <cstdio>#include <cstring>#define INF 0x3fffffffint n;int graph[100][100];bool visit[100];int dis[100];int sum;void prim(){    int i,j;    for(i=1;i<=n;++i)        dis[i]=graph[1][i];    visit[1]=true;    for(i=1;i<n;++i)    {        int min=INF,pos;        for(j=1;j<=n;++j)        {            if(!visit[j]&&min>dis[j])            {                min=dis[j];                pos=j;            }        }        sum+=min;        visit[pos]=true;        for(j=1;j<=n;++j)        {            if(!visit[j]&&dis[j]>graph[pos][j])            {                dis[j]=graph[pos][j];            }        }    }}int main(){    int i,j,p,x,y,z;    while(~scanf("%d",&n)&&n)    {        sum=0;        memset(graph,0,sizeof(graph));        memset(visit,0,sizeof(visit));        memset(dis,0,sizeof(dis));        p=n*(n-1)/2;        for(i=1;i<=n;++i)        {            for(j=1;j<=n;++j)            {                if(i==j)                    graph[i][j]=0;                else                    graph[i][j]=INF;            }        }        for(i=1;i<=p;++i)        {            scanf("%d%d%d",&x,&y,&z);            graph[x][y]=graph[y][x]=z;        }        prim();        printf("%d\n",sum);    }    return 0;}


0 0