• 大小: 407KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: 其他
  • 标签: 图的判断  

资源简介

实现图的判断,图的拓扑排序,单源最短路径,求最大生成树等主要算法!!!

资源截图

代码片段和文件信息

#include
#include
#include
//====================================================================
const int MaxVertices=10;
const int MaxWeight=32767;
class AdjMGraph
{
private:
char Vertices[MaxVertices][10];//顶到信息的数组
int cost[MaxVertices][MaxVertices];//边的权信息的矩阵
int numEnumVv0;//当前的边数,顶点数,源点号
int dist[MaxVertices]pre[MaxVertices];//距离,路径的数组
int flag;//图的类型
public:
AdjMGraph();
void CreatG(int nint e);
void PrintOut(); //输出邻接矩阵
void dijkstra(); //迪杰斯特拉求最短路径
void disply();   //输出最短路径以及长度
void JudgeG();   //判断函数
void TopSort();  //拓扑排序
};
//==================================================================
AdjMGraph::AdjMGraph()
{
int ij;
for(i=0;i {
dist[i]=0;pre[i]=0;
}
for(i=0;i {
for(j=0;j if(i==j)
cost[i][j]=0;
else
cost[i][j]=MaxWeight;
}
numE=0;
numV=0;
}
//=======================================================================
void AdjMGraph::CreatG(int nint e)
{
int vivjw;
numE=e;
numV=n;
cout<<“输入点的信息:“;
for(int i=0;i {
cout<<“\n“< cin>>Vertices[i];
}
char k;
do{
cout<<“\n 输入边的信息(vivjw): “;
cin>>vi>>vj>>w;
cost[vi-1][vj-1]=w;
cout<<“是否继续(Y/N):“;
cin>>k;
}while(k==‘Y‘);
}
//==================================================================================
void AdjMGraph::JudgeG()
{
int ij;
bool x=1y=0;
for(i=0;i {
do{
for(j=0;j {
if(i!=j)
{
if((cost[i][j]!=cost[j][i])||(cost[i][j]==MaxWeight)||(cost[j][i]==MaxWeight))//该图有向
{
flag=1;
x=0;
break;
}
if(cost[i][j]==cost[j][i])                    //该图无向
{
flag=2;
x=0;
}
}
}
}while(x==1);
break;
}
switch(flag)
{
case 1:
{
for(i=0;i {
if(cost[i][i]!=0)
{y=0;break;}
else
y=1;
}
if(y==1)
cout<<“该图为有向无环图“< else
cout<<“该图为有向带环图“< }
break;
case 2:
{
for(i=0;i {
if(cost[i][i]!=0)
{y=0;break;}
else
y=1;
}
if(y==1)
cout<<“该图为无向图“< else
cout<<“该图为无向带环图“< }
break;
}
}
//==========================================================================================
void AdjMGraph::PrintOut()
{
int j;
cout<<“\n 输出顶点的信息:\n“;
for(int i=0;i cout< cout<<“\n 输出邻接矩阵: “;
for(i=0;i {
cout<<“\n“< for(j=0;j cout< cout< }
}
//=================================================================================================
void AdjMGraph::dijkstra()              //求n各顶点,邻接矩阵为cost,从源点i0到个顶点的最短路径
{                 //dist记载从源点到其余各顶点的最短路径长度
    int iuminjv;                    //pre记载

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     180868  2010-07-09 12:12  0810569_05_赵连云\0810569_05_赵连云.docx

     文件     217156  2010-06-11 21:30  0810569_05_赵连云\Graph\Debug\Grahp.exe

     文件      23778  2010-06-11 21:30  0810569_05_赵连云\Graph\Debug\Grahp.obj

     文件     541696  2010-06-11 21:30  0810569_05_赵连云\Graph\Debug\Grahp.pdb

     文件     217132  2010-06-08 22:25  0810569_05_赵连云\Graph\Debug\Graph.exe

     文件     517120  2010-06-08 22:25  0810569_05_赵连云\Graph\Debug\Graph.pdb

     文件      69632  2010-06-11 21:30  0810569_05_赵连云\Graph\Debug\vc60.pdb

     文件       6066  2010-06-11 21:27  0810569_05_赵连云\Graph\Grahp.cpp

     文件       3389  2010-06-08 22:28  0810569_05_赵连云\Graph\Grahp.dsp

     文件        518  2010-06-08 23:16  0810569_05_赵连云\Graph\Grahp.dsw

     文件      50176  2010-06-11 21:38  0810569_05_赵连云\Graph\Grahp.ncb

     文件      48640  2010-06-11 21:38  0810569_05_赵连云\Graph\Grahp.opt

     文件        741  2010-06-11 21:30  0810569_05_赵连云\Graph\Grahp.plg

     目录          0  2010-09-05 11:41  0810569_05_赵连云\Graph\Debug

     目录          0  2010-07-29 09:01  0810569_05_赵连云\Graph

     目录          0  2010-07-29 09:01  0810569_05_赵连云

----------- ---------  ---------- -----  ----

              1876912                    16


评论

共有 条评论