Advertisement
Guest User

Codegazizomonoki

a guest
Jan 20th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #include <iostream>
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5. bool used[200008] , used1[200008];
  6. vector <int> g[200008],r;
  7. map <pair<int, int>, int> z;
  8. int timer = 0, fup[200008], tin[200008];
  9.  
  10. void dfs (int v, int p  ){
  11.     used[v] = 1;
  12.     int childs = 0;
  13.     tin[v]= fup[v] = timer++;
  14.     for(int i =0; i < g[v].size(); i++){
  15.         int to = g[v][i];
  16.         if(to == p){
  17.             continue;
  18.         }
  19.         if(used[to]){
  20.             fup[v] = min(fup[v], tin[to]);
  21.         }
  22.         else{
  23.             dfs(to, v);
  24.             fup[v] = min(fup[v], fup[to]);
  25.             if(fup[to] >= tin[v] && p != -1 && !used1[v]){
  26.                 r.push_back(v);
  27.                 used1[v] = 1;
  28.             }
  29.             childs++;
  30.         }
  31.     }
  32.         if (p == -1 && childs > 1 && !used1[v]){
  33.             r.push_back(v);
  34.             used1[v] = 1;
  35.         }
  36. }
  37.  
  38. int main()
  39. {
  40.     freopen("points.in", "r", stdin);
  41.     freopen("points.out", "w", stdout);
  42.     ios::sync_with_stdio(0);
  43.     cin.tie(0);
  44.     int n, m;
  45.     cin >> n >> m;
  46.     for(int i =1; i <=m; i++){
  47.         int L, R;
  48.         cin >> L >> R;
  49.         g[L].push_back(R);
  50.         g[R].push_back(L);
  51.     }
  52.     dfs(1, -1);
  53.     sort(r.begin(), r.end());
  54.     cout << r.size() << endl;
  55.     for(int i =0; i < r.size(); i++){
  56.         cout << r[i] << endl;
  57.     }
  58.  
  59.  
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement