POJ 1258 - Agri-Net(最小生成树' Prim)

来源:互联网 发布:及壮,知向廉洛之学 编辑:程序博客网 时间:2024/06/06 03:59

题目:

http://poj.org/problem?id=1258

思路:

最小生成树模板题, Prim算法.

CODE:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int INF = 0xffffff;int farm[105][105], d[105], n;bool used[105];int prim(){    fill(d, d + n, INF);    memset(used, 0, sizeof(used));    d[0] = 0;    int ans = 0;    while(1) {        int v = -1;        for(int i = 0; i < n; ++i) {            if(!used[i] && (v == -1 || d[i] < d[v])) v = i;        }        if(v == -1) break;        used[v] = 1;        ans += d[v];        for(int i = 0; i < n; ++i) {            d[i] = min(d[i], farm[v][i]);        }    }    return ans;}int main(){//freopen("in", "r", stdin);    while(~scanf("%d", &n)) {        for(int i = 0; i < n; ++i) {            for(int j = 0; j < n; ++j) {                scanf("%d", &farm[i][j]);            }        }        int ans = prim();        printf("%d\n", ans);    }    return 0;}


0 0
原创粉丝点击