判断无向图是否连通
- DFS,BFS遍历图,是否所有顶点都能访问到。
- 并查集。
判断图中是否有环
有向图:有向图中的环特指同向的环
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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算法(