无向图的连通,有向图的强连通,环

本文介绍了判断无向图是否连通的方法,包括DFS、BFS遍历和并查集。同时,针对有向图中的环检测,详细讲解了拓扑排序和tarjan算法,并探讨了有向图中的强连通分量。对于无向图,提到了n算法和并查集在判断环中的应用。
摘要由CSDN通过智能技术生成

判断无向图是否连通

  1. DFS,BFS遍历图,是否所有顶点都能访问到。
  2. 并查集。

判断图中是否有环

有向图:有向图中的环特指同向的环

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hsVSlpDr-1584972787667)(http://note.youdao.com/noteshare?id=d98bba32026574ec204adac734ccdaf7&sub=4699EAF86DEF463A8BE50FC418E4108A)]
1、拓扑排序

//邻接表版
class Solution{
   
public:
    bool topologicalSort(vector<vector<int> >& graph){
   
        int V = graph.size();
        int in_degree[V] = {
   };
        for(vector<int> v:graph){
   
            for(int x:v) in_degree[x]++;
        }
        //topo
        int num = 0; //拓扑排序成功的顶点个数
        queue<int> q;
        for(int i=0; i<V; i++){
   
            if(in_degree[i]==0) q.push(i);
        }
        while(!q.empty()){
   
            int v = q.front();
            q.pop();
            cout<<v<<' ';
            num++;
            for(int u:graph[v]){
   
                in_degree[u]--;
                if(in_degree[u]==0) q.push(u);
            }
        }
        if(num==V) return true;
        else return false;
    }
};

2、tarjan算法(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值