hdu1233

来源:互联网 发布:手机网络监控直播 编辑:程序博客网 时间:2024/05/17 08:31
#include <iostream>#include <cstdio>#include <cstring>const int _max = 0xfffff;const int maxn = 111;int map[maxn][maxn];bool visit[maxn];int dist[maxn];int n;void inint(){    for(int i = 1; i <= n; i++)        for(int j = 1; j <= n; j++)        map[i][j] = _max;}void prim(){    for(int i = 2; i <= n; i++)        dist[i] = map[1][i];    dist[1] = 0;    visit[1] = true;    int sum = 0;    for(int i = 1; i < n; i++)    {        int min = _max;        int k;        for(int j = 1; j <= n; j++)            if(!visit[j] && dist[j] < min)            {                min = dist[j];                k = j;            }        sum += min;        visit[k] = true;        for(int j = 1; j <= n; j++)            if(!visit[j] && dist[j] > map[k][j])                dist[j] = map[k][j];    }    printf("%d\n", sum);}int main(){    while(scanf("%d", &n)!=EOF&&n)    {        inint();        int u, v, w;        for(int i = 0; i < n*(n-1)/2; i++)        {            scanf("%d%d%d", &u, &v, &w);            if(map[u][v] > w) map[u][v] = map[v][u] = w;        }        memset(visit, false, sizeof(visit));        prim();    }}

原创粉丝点击