如何判别一个有向图中是否有环路

2025-04-21 02:27:33

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>);

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢