如何判别一个有向图中是否有环路
1、a可以,深搜万能,就是时间有点那个b当然可以,拓朴排序本来就是在无环图才有解的C.求最短路径,这个..一般不行,不过你用floyd修改我也无语了,可以,但时间代价有点大D.广度优先遍历,这个。。应该也可以吧,就是只要队列重复就有环,不过判断很麻烦,得细细做才能出来。用宽搜是不是有点大材小用? 单选选B因为B是基础的就可以,不需修改

2、#include"utility.h"#include"adj_matrix_undir_graph.h"#include"adj_list_dir_graph.h"#include"dfs.h"#include"bfs.h"int main(void){int n,j=0,i=0;int m,e,b=0;char vexs[20],c;char nums[20];
3、cout<<"输入无向图的顶点个数n:"<<endl;cin>>n;cout<<"输入顶点元素:"<<endl;for(i=0;i<n;i++){cout<<"请输入第"<<j<<"个结点"<<endl;cin>>vexs[i];j++;}
4、cout<<"输出无向图的邻接矩阵:"<<endl;AdjMatrixUndirGraph<char> aundir(vexs,n);for(i=0;i<n;i++)
5、{for(int v=1;v<n;v++){cout<<"输入Y/N,是否插入边:";cin>>c;if(c == 'Y' )aundir.InsertEdge(i,v);}}Display(aundir);
6、cout<<"请输入有向图的顶点个数m:";cin>>m;for(int a=0;a<m;a++){cout<<"输入第"<<b<<"个顶点数据";cin>>nums[a];b++;}AdjListDirGraph<char> dir(nums,m); for(int k=0;k<m;k++)
7、{for(e=0;e<m;e++){cout<<"是否插入边V"<<k<<",V"<<e<<":"; cin>>c; if(c == 'Y' )dir.InsertEdge(k,e);}}Display(dir);cout<<"无向图的深度遍历:";DFSTraverse<char>(aundir,Write<char>);cout<<endl;cout<<"无向图的广度遍历:"; BFSTraverse<char>(aundir,Write<char>);
8、cout<<endl;cout<<"有向图的深度遍历:";DFSTraverse<char>(dir,Write<char>);cout<<endl;cout<<"有向图的广度遍历:"; BFSTraverse<char>(dir,Write<char>);