poj 1258 最小代价网络

来源:互联网 发布:飞鱼网络电视tv 编辑:程序博客网 时间:2024/04/27 20:20

基本prim算法

#include <iostream>#include <sstream>#include <cstdio>#include <cstring>#include <cmath>#include <string>#include <vector>#include <set>#include <cctype>#include <algorithm>#include <cmath>#include <deque>#include <queue>#include <map>#include <queue>#include <list>#include <iomanip>using namespace std;                                               //////const int INF =  20000000;   #define maxn 110   #define max(a,b)(a>b?a:b)///int N; //农场数目int cost[maxn][maxn];int lowc[maxn];bool vis[maxn];int prim(){int i, j;int p = -1;int minc, res = 0;memset(vis, false, sizeof(vis));vis[1] = true;for (i = 2; i <= N; i++)lowc[i] = cost[1][i];for (i = 2; i <= N; i++){minc = INF;p = -1;for (j = 1; j <= N; j++){if (0 == vis[j] && lowc[j] < minc){minc = lowc[j];p = j;}}res += minc;vis[p] = 1;for (j = 1; j <= N; j++){if (0 == vis[j] && lowc[j] > cost[p][j])lowc[j] = cost[p][j];}}return res;}int main(){///int i, j;while(scanf("%d", &N) != EOF){for (i = 1; i <= N; i++){for (j = 1; j <= N; j++){scanf("%d", &cost[i][j]);}}int ans = prim();printf("%d\n", ans);}///    return 0;}                                              


 

 

原创粉丝点击