C++编程实现医院选址问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 07:22:34
问题描述:n个村庄之间的无向图,边上的权值w(i,j)表示村庄i和j之间道路长度.现要从这n个村庄中选择一个村庄新建一所医院,使离医院最远的村庄到医院的路程最短.设计一程序求解此问题.
基本要求:用邻接矩阵表示无向网,应显示所选中的村庄到各村庄的最短距离。注,村庄编号、权值可输入。该题需要求出所有顶点之间的最短路径,然后求出每行的和,选择和值最小的那一行,则该行的下标所对应的村庄即为所求。
最好给个代码,可以发到我邮箱 876567370@qq.com

医院选址
1.
代码如下

#include <iostream>
using namespace std;
#define MAXV 50
#define INF 32767
typedef int InfoType;
//邻接矩阵存储方法
typedef struct
{
int no;
InfoType info;
} VertexType;
typedef struct
{
int edges[MAXV][MAXV];
int n,e;
VertexType vexs[MAXV];
} MGraph;
//狄克斯特拉算法
void Ppath(int path[],int i,int v)
{
int k;
k=path[i];
if(k==v) return;
Ppath(path,k,v);
cout<<k;
}
int biaoji1=0,biaoji2=0;
void Dispath(int dist[],int path[],int s[],int n,int v)
{
int i;
for(i=0;i<n;i++)
{
if(i==v) continue;
if(s[i]==1)
{
cout<<"从"<<v<<"到"<<i<<"的最短路径为:"<<dist[i]<<" ";
cout<<v;
Ppath(path,i