AC

⛴李恒旭(⓿_⓿)⚔♆§  •  10个月前


include <bits/stdc++.h>

include

using namespace std;

define INF 100005

int vis[105], dist[INF]; int g[105][105];//mp int sum = 0; int n;//节点

void prim(int v) {

vis[v] = 1; //第一步
for (int i = 0; i < n; i++) {
	dist[i] = g[v][i];
}//第二步
for (int i = 1; i < n; i++) {
	int min = INF;
	for (int j = 0; j < n; j++) { //第三步
		if (!vis[j] && dist[j] < min) {
			min = dist[j];
			v = j;
		}
	}
	vis[v] = 1; //第四步
	for (int j = 0; j < n; j++) { //第五步
		if (!vis[j] && dist[j] > g[v][j]) {
			dist[j] = g[v][j];
		}
	}
}

}

int main() {

memset(vis, 0, sizeof vis);
memset(dist, INF, sizeof dist);
cin >> n;
for (int i = 0; i < n; i++) {
	for (int j = 0; j < n; j++) {
		cin >> g[i][j];
	}
}
//Prim算法 (如下)
prim(0);
for (int i = 0; i < n; i++) {
	sum += dist[i];
}
cout << sum;
return 0;

}


评论:

请先登录,才能进行评论