首页 > 其他 > 详细

POJ 1258

时间:2021-04-14 15:34:36      阅读:22      评论:0      收藏:0      [点我收藏+]

稠密图,如此前博客所总结的,稠密图使用Prim

#include <iostream>
#include <algorithm>
#include <queue>
#include <string>
#include <vector>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <stack>
#include <map>
#include <set>
using namespace std;

const int maxn= 105;
const int INF= 0x3f3f3f3f;

int vis[maxn], dis[maxn];
int fm[maxn][maxn];

int Prim(const int n)
{
	for (int i= 1; i< n; ++i){
		dis[i]= fm[0][i];
		vis[i]= 0;
	}
	dis[0]= 0;
	vis[0]= 1;
	int ans= 0;
	int p, minc;

	for (int i= 1; i< n; ++i){
		minc= INF;
		p= -1;
		for (int j= 1; j< n; ++j){
			if (!vis[j] && minc > dis[j]){
				minc= dis[j];
				p= j;
			}
		}
		if (-1== p){
			return -1;
		}
		ans+= minc;
		vis[p]= 1;
		for (int j= 1; j< n; ++j){
			if (!vis[j] && dis[j] > fm[p][j]){
				dis[j]= fm[p][j];
			}
		}
	}

	return ans;
}

int main(int argc, char const *argv[])
{
	int n;
	while (~scanf("%d", &n)){
		for (int i= 0; i< n; ++i){
			for (int j= 0; j< n; ++j){
				scanf("%d", fm[i]+j);
			}
		}
		printf("%d\n", Prim(n));
	}
	return 0;
}

POJ 1258

原文:https://www.cnblogs.com/Idi0t-N3/p/14657449.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!