HDU 1233

来源:互联网 发布:知乎 显微镜 编辑:程序博客网 时间:2024/06/04 21:59

Prim模板题


#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;


int Map[105][105],n,visit[105],low[105],t;


#define MaxInt 0x3f3f3f


int Prim()
{
    int pos,Min,ans=0,j;
    visit[1]=1;
    for(int i=2;i<=t;i++){
        low[i]=Map[1][i];
    }


    for(int i=1;i<t;i++){
            Min = MaxInt;
        for(j=1;j<=t;j++){
            if(visit[j]==0&&low[j]<Min){
                Min=low[j];
                pos=j;
            }
        }
        visit[pos]=1;
        ans+=Min;//printf("dian:%d ans:%d\n",pos,ans);
        for(j=1;j<=t;j++){
            if(visit[j]==0&&Map[pos][j]<low[j])
                low[j]=Map[pos][j];
        }
    }
    return ans;
}


int main()
{
    int a,b,c,d;
    while(scanf("%d",&t)!=EOF){
        if(t==0) break;
        n = (t-1)*t/2;
        memset(visit,0,sizeof(visit));
        for(int i=0;i<n;i++){
            scanf("%d %d %d",&a,&b,&c);
            Map[a][b]=Map[b][a]=c;
        }
        printf("%d\n",Prim());
    }
}




0 0
原创粉丝点击