POJ 1278(细节prim)

来源:互联网 发布:linux ipython 编辑:程序博客网 时间:2024/05/17 04:10

题意:看输入和输出就知道,不多讲。



但是在输入的路径上一定要看清楚,也就是建图。


#include<cstdio>#include<cstring>#define inf 0x3f3f3f3fint gragh[1005][1005];int dis[200];int visit[200];int n,m;int prim(){    int sum = 0;    memset(visit,0,sizeof(visit));    for(int i = 1;i <= n; i++)        dis[i] = gragh[1][i];    visit[1] = true;    int pos,Min;    for(int i = 1;i < n; i++){        Min = inf;        for(int j = 1;j <= n; j++){            if(visit[j] == 0 && Min > dis[j]){                Min = dis[j];                pos = j;            }        }        sum += dis[pos];        visit[pos] = true;        for(int j = 1;j <= n; j++){            if(visit[j] == 0 && dis[j] > gragh[pos][j]){                dis[j] = gragh[pos][j];            }        }    }    return sum;}int main(){ //   freopen("in.txt","r",stdin);    while(scanf("%d",&n) != EOF){        if(n == 0)            break;        scanf("%d",&m);        if(n == 1){            printf("0\n");            continue;        }        memset(gragh,inf,sizeof(gragh));        int s,e,v;        for(int i = 1;i <= m; i++){            scanf("%d%d%d",&s,&e,&v);            if(v < gragh[s][e])             //注意                gragh[s][e] = gragh[e][s] = v;        }        int ans = prim();        printf("%d\n",ans);    }    return 0;}


0 0