当前位置:   article > 正文

图论基础之 图中找环_图论找环

图论找环

对于有向图而言 可以使用拓扑排序的方式找出图中的环

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int maxn = 1e5+7;
  4. int n;
  5. int du[maxn];//入度
  6. vector<int> gra[10];
  7. vector<int> res;
  8. void addedge(int a,int b){
  9. du[b]++;
  10. gra[a].push_back(b);
  11. }
  12. void topo(){
  13. queue<int> q;
  14. for(int i = 1; i <= n; i++){
  15. if(du[i] == 0){
  16. q.push(i);
  17. }
  18. }
  19. while(!q.empty()){
  20. int temp = q.front();
  21. q.pop();
  22. for(int i = 0; i < gra[temp].size(); i++){
  23. int to = gra[temp][i];
  24. du[to]--;
  25. if(!du[to]){
  26. q.push(i);
  27. }
  28. }
  29. }
  30. }
  31. int main(){
  32. cin>>n;
  33. for(int i = 0; i < n; i++){
  34. int a,b;
  35. cin>>a>>b;
  36. addedge(a,b);
  37. }
  38. topo();
  39. for(int i = 1; i <= n; i++){
  40. if(du[i]){
  41. cout<<i<<' ';
  42. }
  43. }
  44. }

对于无向图 可以采用并查集的方式,在读边的时候,如果两个顶点在同一个集合中,说明构成了环,这时令这两个顶点作为起点和终点,深搜一下输出路径即可

蓝桥杯2017国赛c++b组 t4 找环

题意:

编号为1

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/64528
推荐阅读
相关标签
  

闽ICP备14008679号