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

📄 b.cpp

📁 是一个通讯录的问题
💻 CPP
字号:
#include <iostream.h>
#include <stdlib.h>
const int MVNum=100;//最大顶点数
const int MAXINT=32767; //全局整型变量
enum boolean {FALSE,TRUE}; //枚举类型
typedef char Vexlist[MVNum]; //顶点数组,类型为CHAR型
typedef int adjmatrix[MVNum][MVNum];

void CreateVexlist(Vexlist GV,adjmatrix GA,int n,int e)
{   //通过从键盘输入的N个顶点和E条边建立顶点数组和邻接矩阵 
	int i,j,k,w;
    //建立顶点数组 
	cout<<"输入"<<n<<"个顶点"<<endl;
	 for(i=0;i<n;i++)
		 cin>>GV[i];
	//初始化邻接数组
	 for(i=0;i<n;i++)
		 for(j=0;j<n;j++){
			 if(i==j)
				 GA[i][j]=0;
			 else
				 GA[i][j]=MAXINT;
		 }
	 
    //建立邻接矩阵	 
	cout<<"输入"<<e<<"条边"<<endl;
	for(k=1;k<=e;i++){
		cin>>i>>"">>j>>"">>w;//输入一条边上的端点I,J及边上的权值W
		GA[i][j]=w;
	}
	cout<<GA[i][j]<<endl;
	cout<<"有向图的存储结构建立完毕!"<<endl;
}

//调用弗洛依德算法,求出每对顶点的最短长度对应保存在二维数组A中
void Floyed(adjmatrix GA,adjmatrix A,int n)
{
	int i,j,k;
   //给二维数组赋初值等于图的邻接矩阵GA
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)//设置路径长度D和路径PATH的初值
        	A[i][j]=GA[i][j];//依次以每个顶点作为中间点,逐步优化数组A,求每对顶点之间的最短路径	
		
    for(k=0;k<n;k++)//做K次迭代把顶点K扩充到当前的最短路径PIJ上
	    for(i=0;i<n;i++)
			for(j=0;j<n;j++)
				{
				if(i==k||j==k||i==j)
					continue;
				if(A[i][k]+A[k][j]<A[i][j])
					A[i][j]=A[i][k]+A[k][j];//修改长度
					
			}
   cout<<A[i][j]<<endl;				
}

//求各顶点的偏心度
void FLOYD_PXD(adjmatrix GA,int n)
{ int i,j,k;
  adjmatrix w;
  for(i=0;i<MVNum;i++){
	  for(j=0;j<MVNum;j++)
		  w[i][j]=GA[i][j];//将邻接矩阵复制到W中 
  }
  for(k=0;k<n;k++)//求每对顶点的最短路径
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			if( w[i][j]>w[i][k]+w[k][j])
				w[i][j]=w[i][k]+w[k][j];
  
int  GV=1;int dist=MAXINT;//中心点初值顶点为1,偏心度为机器最大数
  
  for(j=0;j<n;j++)
	   {int s=0;
	    for (i=0;i<n;i++)
			if (w[i][j]>s) s=w[i][j];//每列中最大值为该顶点的偏心度
		if(s<dist){dist=s;GV=j;}//各偏心度最小值为中心点
		}
  cout<<"有向图GV的中心点是顶点"<<GV<<endl;
  cout<<" 偏心度是 "<<dist<<endl;
  
}     

//主函数
void main()
{int e;
cout<<"请输入你需要的边数"<<endl;
cin>>e;
int n;
cout<<"请输入你需要的顶点数"<<endl;
cin>>n;
Vexlist GV;
adjmatrix G,GA,A;

  CreateVexlist(GV,G,n,e);
  Floyed(GA,A,n);
  FLOYD_PXD(G,n);
  cout<<"超市的地址应选为"<<GV<<endl;
}

⌨️ 快捷键说明

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