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

📄

📁 自己编写的
💻
字号:
#include <iostream>
const int N = 50;
int count = 0;             // 记录总权值
using namespace std;
int visited[N];       // 记录访问顶点
void NearestNeighbor(int n,int dis[][N],int v0) // v0为任意指定的开始顶点
{
	int m = 0,t = v0;
	int i,k;
	int min;
	while(1){
		min = 10000; 
		for(i = 1; i <= n; i++)
			if(!visited[i] && dis[t][i] < min && (i != t)){
				min = dis[t][i];
				k = i;
			}
		m = m + 1;
		t = k;
		visited[k] = 1;
		count += min;
		if(m == n - 1){
			count = count + dis[t][v0]; // 回路
			break;
		}
	}
}





int main()
{
	int n;            // 顶点个数
	int distance[N][N];   // 距离矩阵
	int i,j;
	scanf("%d",&n);
	for(i = 1; i <= n; i++)       // 顶点从1开始算起
		for(j = 1; j <= n; j++)
			scanf("%d",&distance[i][j]);
	memset(visited,0,sizeof(visited));
	int v0 = 3;        // 开始顶点
	visited[v0] = 1;
	NearestNeighbor(n,distance,v0);
	printf("%d\n",count);
	return 0;
}

⌨️ 快捷键说明

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