Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define ll long long
- #define N ((int)6e4 + 5)
- #define MOD ((int)1e9 + 7)
- #define MAX ((int)1e9 + 7)
- #define MAXL ((ll)1e18 + 7)
- #define MAXP ((int)1e3 + 7)
- #define thr 1e-8
- #define pi acos(-1) /// pi = acos ( -1 )
- #define fastio ios_base::sync_with_stdio(false),cin.tie(NULL)
- #define endl "\n"
- using namespace std;
- vector < int > art;
- vector < pair < int , int > > bridge;
- void dfs(int n , int p)
- {
- reach[n] = dep[n] = dep[p] + 1;
- vis[n] = 1;
- int cnt = 0;
- for(int a:adj[n]){
- if(a == p){
- p = -1;
- continue;
- }
- else if(vis[a] == 0){
- cnt++;
- dfs(a , n);
- if(reach[a] >= dep[n] && n != root) art.push_back(n);
- if(reach[a] > dep[n]) bridge.push_back({n , a});
- reach[n] = min(reach[n] , reach[a]);
- }
- else if(dep[a] < dep[n]){
- reach[n] = min(reach[n] , dep[a]);
- }
- }
- if(n == root && cnt > 1) art.push_back(n);
- }
Advertisement
Add Comment
Please, Sign In to add comment