Advertisement
mickypinata

TOI12: Weak Point

Nov 16th, 2021
626
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.45 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 5e5 + 5;
  5.  
  6. vector<int> adj[N];
  7. int dp[N], low[N], disc[N];
  8. bool visited[N], isArt[N];
  9.  
  10. int discCnt = 0;
  11. int DFS(int u, int p){
  12.     visited[u] = true;
  13.     disc[u] = ++discCnt;
  14.     low[u] = disc[u];
  15.     int cntArt = 1;
  16.     int cntRet = 1;
  17.     for(int v : adj[u]){
  18.         if(v == p){
  19.             continue;
  20.         }
  21.         if(visited[v]){
  22.             low[u] = min(low[u], disc[v]);
  23.         } else {
  24.             int add = DFS(v, u);
  25.             cntRet += add;
  26.             low[u] = min(low[u], low[v]);
  27.             if(p != 0 && low[v] >= disc[u]){
  28.                 cntArt += add;
  29.                 dp[u] = cntArt;
  30.                 isArt[u] = true;
  31.             }
  32.         }
  33.     }
  34.     return cntRet;
  35. }
  36.  
  37. int main(){
  38.  
  39.     int nVertex, rt;
  40.     scanf("%d%d", &nVertex, &rt);
  41.     for(int i = 1; i <= nVertex; ++i){
  42.         int u, v;
  43.         scanf("%d%d", &u, &v);
  44.         adj[u].push_back(v);
  45.         adj[v].push_back(u);
  46.     }
  47.     DFS(rt, 0);
  48.     int weak = 0;
  49.     int mx = 0;
  50.     bool found = false;
  51.     for(int u = 1; u <= nVertex; ++u){
  52.         //printf("dp[%d]:%d\n", u, dp[u]);
  53.         if(isArt[u] && dp[u] > mx){
  54.             found = true;
  55.             mx = dp[u];
  56.             weak = u;
  57.         }
  58.     }
  59.     if(found){
  60.         cout << weak << '\n' << mx - 1;
  61.     } else if(rt == 1){
  62.         cout << "2\n0";
  63.     } else {
  64.         cout << "1\n0";
  65.     }
  66.  
  67.     return 0;
  68. }
  69.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement