⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2377.txt

📁 北大ACM题目例程 详细的解答过程 程序实现 算法分析
💻 TXT
字号:


#include <stdio.h>
#include <vector>
using namespace std;

vector<pair<int,int> > e[1000];
int n;

int prim( ) {
	int i, j, k, dis[1000] = { 0 }, ans = 0;
	bool sign[1000] = { false };

	for( i=0; i<n; i++ ) {
		k = -1;
		for( j=0; j<n; j++ )
			if( !sign[j] && ( k < 0 || dis[j] > dis[k] ) )
				k = j;

		if( i && dis[k] == 0 )
			return -1;

		sign[k] = true;
		ans += dis[k];
		for( j=0; j<e[k].size(); j++ )
			if( dis[e[k][j].first] < e[k][j].second )
				dis[e[k][j].first] = e[k][j].second;
	}
	return ans;
}

void input( ) {
	int m, a, b, c;
	scanf( "%d%d", &n, &m );
	while( m-- ) {
		scanf( "%d%d%d", &a, &b, &c );
		a--, b--;
		e[a].push_back( make_pair(b,c) );
		e[b].push_back( make_pair(a,c) );
	}
}

int main( ) {
	input( );
	printf( "%d\n", prim( ) );
	return 0;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -