Rural health clinic site

 Binary tree of knowledge

#include <iostream>
#define N 100
using namespace std;
void main()
{
	char v[N] = { 0 };//存放顶点字母
	int n;
	int e[N][N] = { 0 };//存放两地之间的距离
	cout << "输入顶点个数" << endl;
	cin >> n;
	cout << "输入顶点字母" << endl;
	for (int i = 0; i < n; i++)
		cin >> v[i];
	cout << "输入两地之间的距离" << endl;

	//输入矩阵
	for (int i = 0; i < n; i++)
		for (int j = i + 1; j < n; j++)
		{
			cout << "输入" << v[i] << "到" << v[j] << "之间的距离(没有直接路径请输入‘100’)" << endl;
			cin >> e[i][j];
			e[j][i] = e[i][j];
		}
	for (int i = 0; i < n; i++)
		for (int j = 0; j < n; j++)
		{
			if (i == j)
				e[i][j] = 0;
		}
	cout << endl;
	//最短路径矩阵
	cout << "最短距离矩阵为:" << endl;
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < n; j++)
		{
			for (int k = 0; k < n; k++)
			{

				if (e[i][j] > e[i][k] + e[k][j])

				{
					e[i][j] = e[i][k] + e[k][j];

				}

				if (i == j)
					e[i][j] = 0;
			}
			cout << " " << e[i][j] << " ";

		}
		cout << endl;
		cout << endl;

	}
	//输出卫生所所在村庄
	char M;
	int min = N;
	//int m[sizeof(e[n][n])]={N};
	int y;
	//int sum=0;
	for (int i = 0; i < n; i++)
	{
		int sum = 0;
		for (int j = 0; j < n; j++)
		{
			sum += e[i][j];
		}

		if (min > sum)
		{

			min = sum;
			M = v[i];
			y = i;
		}

	}
	cout << "卫生所应建在" << M << "地" << endl;
	//输出卫生所到各点的距离

	for (int i = 0; i < n; i++)
		if (M != v[i])
		{
			cout << M << "地距" << v[i] << "地的距离为:";
			cout << e[i][y] << endl;
		}

	//输出最短路径
	/*int s=0;
	for(i=0;i<n;i++)
	{
	s+=e[i][y];
	}
	cout<<endl;*/
	cout << "最短路径长度为:" << min << endl;
}

 

Published 17 original articles · won praise 9 · views 189

Guess you like

Origin blog.csdn.net/shnagmiao/article/details/104428304