#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int INF = 0x3f3f3f3f;
const int MAXN = 105;
int cost[MAXN][MAXN];
int lowcost[MAXN];
int visit[MAXN];
int prim(int n){
memset(visit, 0, sizeof(visit));
for(int i = 1; i <= n; ++i) lowcost[i] = cost[1][i];
visit[1] = 1;
lowcost[1] = 0;
int res = 0;
for(int i = 2; i <= n; ++i)
{
int minc = INF;
int flag = -1;
for(int j = 1; j <= n; ++j)
{
if(!visit[j] && minc > lowcost[j]){
minc = lowcost[j];
flag = j;
}
}
if(flag == -1) return -1;
res += minc;
visit[flag] = 1;
for(int j = 1; j <= n; ++j){
if(!visit[j] && lowcost[j] > cost[flag][j]){
lowcost[j] = cost[flag][j];
}
}
}
return res;
}
int main(){
int n;
while(cin >> n)
{
for(int i = 1; i <= n; ++i)
for(int j = 1; j <= n; ++j)cin >> cost[i][j];
cout << prim(n) << endl;
}
return 0;
}
POJ-1258(Agri-Net) Prim
原创
©著作权归作者所有:来自51CTO博客作者qq5813099298a32的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
POJ1258 Agri-Net【Prim】
题目大意:给你一个N个点的矩阵图,求所有点相连的最小生成树。思路:直接裸的Prim算法。
#include i++ ios -
Agri-Net(POJ1258)
#include#include#include#include
distance each go output integer -
【POJ】[1258]Agri-Net
现在看都是非常水的一个最小生成树了…… 可以...
i++ #include 最小生成树 ZOJ