Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.00 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. const int MAXN = 10;
  5.  
  6. std::vector<int> g[MAXN];
  7. bool used[MAXN];
  8. int timer, tin[MAXN], fup[MAXN];
  9.  
  10. int min(int a, int b)
  11. {
  12.     return a < b ? a : b;
  13. }
  14.  
  15. void dfs(int v, int p = -1) {
  16.     used[v] = true;
  17.     tin[v] = fup[v] = timer++;
  18.     int children = 0;
  19.     for (size_t i = 0; i < g[v].size(); ++i) {
  20.         int to = g[v][i];
  21.         if (to == p)  continue;
  22.         if (used[to])
  23.             fup[v] = min(fup[v], tin[to]);
  24.         else {
  25.             dfs(to, v);
  26.             fup[v] = min(fup[v], fup[to]);
  27.             if (fup[to] >= tin[v] && p != -1)
  28.                 std::cout << v;
  29.             ++children;
  30.         }
  31.     }
  32.     if (p == -1 && children > 1)
  33.         std::cout << v;
  34. }
  35.  
  36. int main4() {
  37.     const int n = 7;
  38.    
  39.    
  40.  
  41.     g[0] = {1, 2, 5};
  42.     g[1] = {0, 2, 3};
  43.     g[2] = {0, 1, 3, 5};
  44.     g[3] = {1, 2};
  45.     g[4] = {5};
  46.     g[5] = {0, 2, 4};
  47.    
  48.  
  49.     /*
  50.     g[0] = { 1, 3 };
  51.     g[1] = { 0, 2, 3 };
  52.     g[2] = { 1, 3 };
  53.     g[3] = { 0, 1, 2, 4, 5 };
  54.     g[4] = { 3, 5, 6 };
  55.     g[5] = { 3, 4, 6 };
  56.     g[6] = { 4, 5};
  57.     */
  58.  
  59.     for (int i = 0; i < n; ++i)
  60.         used[i] = false;
  61.     dfs(0);
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement