现在的位置: 首页 > 综合 > 正文

poj Agri-Net

2019年11月11日 ⁄ 综合 ⁄ 共 524字 ⁄ 字号 评论关闭

prim算法

#include <iostream>
using namespace std;
int m[101][101];
int prim(int k){
    int ans = 0, dist[101];
    bool vis[101];
    for(int i = 1; i < k; i++){
        dist[i] = m[0][i];
        vis[i] = 0;
    }
    vis[0] = true;
    int cnt = k-1;
    while(cnt--){
        int mi = 9999999;
        int tmp = 0;
        for(int i = 1; i < k; i++)
            if(dist[i] < mi && vis[i] == 0){
                mi = dist[i];
                tmp = i;
        }
        ans += mi;
        vis[tmp] = true;
        for(int i = 0; i < k; i++)
            if(m[tmp][i] < dist[i] && vis[i] == 0)
                dist[i] = m[tmp][i];
            cout << ans  << endl;
    }
    return ans;
}
int main(int argc, char const *argv[])
{
    int n;
    while(cin >> n){
        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                cin >> m[i][j];
       cout << prim(n) << endl;
    }
    return 0;
}

抱歉!评论已关闭.