Advertisement
DarkTXYZ

CUBE-190: Supernova

Jun 2nd, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. using ll = long long;
  5.  
  6. ll n,m;
  7. const ll N = 100005;
  8. vector<ll> G[N];
  9. ll color[N];
  10. ll par[N],mark[N],dp[N];
  11. pair<ll,ll> edge[N];
  12. ll nt = 0;
  13.  
  14. long long dfs(ll p , ll u){
  15.     if(dp[u])
  16.         return dp[u];
  17.     long long ans = 1;
  18.     for(auto c : G[u]){
  19.         if(c != p and !mark[c])
  20.             ans += dfs(u,c);
  21.     }
  22.     dp[u] = ans;
  23.     return ans;
  24. }
  25.  
  26. void cycle(ll p , ll u){
  27.     if(color[u] == 2)
  28.         return ;
  29.     if(color[u] == 1){
  30.         ll cur = p;
  31.         mark[cur] = 1;
  32.         while(cur != u){
  33.             cur = par[cur];
  34.             mark[cur] = 1;
  35.             nt++;
  36.         }
  37.         return;
  38.     }
  39.     par[u] = p;
  40.     color[u] = 1;
  41.     for(auto v : G[u]){
  42.         if(v == par[u])
  43.             continue;
  44.         cycle(u,v);
  45.     }
  46.     color[u] = 2;
  47. }
  48.  
  49. int main(){
  50.     scanf("%lld%lld",&n,&m);
  51.     for(ll i = 1 ; i <= n ; ++i){
  52.         ll u,v;
  53.         scanf("%lld%lld",&u,&v);
  54.         G[u].push_back(v);
  55.         G[v].push_back(u);
  56.         edge[i] = {u,v};
  57.     }
  58.     cycle(0,1);
  59.     for(long long i = 1 ; i <= n ; ++i){
  60.         if(mark[i])
  61.             dfs(0,i);
  62.     }
  63.     for(ll i = 1 ; i <= m ; ++i){
  64.         ll u = edge[i].first;
  65.         ll v = edge[i].second;
  66.         if(mark[u] and mark[v])
  67.             printf("0 ");
  68.         else{
  69.             long long cnt = min(dp[v],dp[u]);
  70.             printf("%lld ",cnt * (n-cnt));
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement