您的位置:首页 > 其它

prim算法最小生成树(优化)

2014-02-21 10:07 246 查看
#include <iostream>
using namespace std;
const int maxn = 1000;
int f[maxn]={0};
int n,e;
int a[maxn][maxn]={0};
void prim(int v0) {
int cost[maxn];
for (int i=0;i<n;i++) cost[i]=1000000;
for (int i=1;i<n;i++) if (a[v0][i]) cost[i]=a[v0][i];
f[v0]=1;
int pos;
int ans=0;
for (int k=1;k<n;k++) {
int mini=1000000;
for (int i=0;i<n;i++) {
if (cost[i]<mini && !f[i]) {
mini=cost[i];
pos=i;
}
}
f[pos]=1;ans += cost[pos];
for (int i=0;i<n;i++) {
if (!f[i] && a[pos][i] && a[pos][i]<cost[i]) {
cost[i] = a[pos][i];
}
}
}
}
int main () {
cin >> n >> e;
for (int i=0;i<e;i++) {
int p,q;
cin >> p >> q;
cin >> a[p][q];
a[q][p]=a[p][q];
}
prim(1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: