Submission #1249290

#TimeUsernameProblemLanguageResultExecution timeMemory
1249290ender_shayanMaking Friends on Joitter is Fun (JOI20_joitter2)C++20
Compilation error
0 ms0 KiB
#include<bits/stdc++.h>
using namespace std;


typedef long long        ll;
typedef pair<int,int>    pii;
typedef pair<ll,ll>      pll;


#define F               first
#define S               second    
#define fast_io         ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define all(x)          x.begin(),x.end()
#define pb              push_back
#define Mp              make_pair
#define for1(n)         for(int i=1;i<=n;i++)
#define for0(n)         for(int i=0;i<n;i++)
#define set_dec(x)	    cout << fixed << setprecision(x);
#define endl            '\n'


const ll mod=1e9+7;

const int N=1e5+10,L=21,base=701;

int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
vector<int>g[N];
map<int,int>in[N],out[N],is[N];
ll ans;
int get_par(int v){
    if(par[v]==0)return v;
    return par[v]=get_par(par[v]);
}
void merg(int u,int v){
    u=get_par(u);
    v=get_par(v);
    if(u==v)return;
    if(sz[u]+in[u].size()+out[u].size()+is[u].size()>sz[v]+in[v].size()+out[v].size()+is[v].size())swap(u,v);
    par[u]=v;
    ans+=1ll*sz[v]*sz[u]*2;
    ans+=degin[v]*sz[u]+degin[u]*sz[v];
    degin[v]+=degin[u];
    out[v][u]=out[u][v]=in[v][u]=in[u][v]=0;
    vector<int>vec;
    for(pii p:out[u]){
        int uu=p.F,t=p.S;
        out[v][uu]+=t;
        if(in[v][uu])
            vec.pb(uu);
    }
    for(pii p:in[u]){
        int uu=p.F,t=p.S;
        in[uu][v]+=t;
        if(out[v][uu])
            vec.pb(uu);
    }
    for(int u:vec){
        ans-=out[v][u]*sz[u]+out[u][v]*sz[v];
        degin[v]-=out[u][v];
        degin[u]-=out[v][u];
        out[v][u]=out[u][v]=in[v][u]=in[u][v]=0;
    }
    sz[v]+=sz[u];
    for(pii p:is[u])is[v][p.F]++;
    out[u].clear();in[u].clear();is[u].clear();
    for(int u:vec)merg(u,v);
}
int main(){
    fast_io
    cin>>n>>m;
    for1(n)sz[i]=1;
    for(int _=0;_<m;_++,cout<<ans<<endl){
        int u,v;cin>>u>>v;
        int uu=u;
        u=get_par(u);v=get_par(v);
        if(u==v)continue;
        if(is[v][uu])continue;
        is[v][uu]=1;
        ans+=sz[v];
        out[u][v]++;
        in[v][u]++;degin[v]++;
        if(in[u][v]){
            ans-=1ll*out[u][v]*sz[v]+1ll*out[v][u]*sz[u];
            degin[v]-=out[u][v];
            degin[u]-=out[v][u];
            out[v][u]=out[u][v]=in[v][u]=in[u][v]=0;
            merg(u,v);
        }
    }

}#include<bits/stdc++.h>
using namespace std;


typedef long long        ll;
typedef pair<int,int>    pii;
typedef pair<ll,ll>      pll;


#define F               first
#define S               second    
#define fast_io         ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define all(x)          x.begin(),x.end()
#define pb              push_back
#define Mp              make_pair
#define for1(n)         for(int i=1;i<=n;i++)
#define for0(n)         for(int i=0;i<n;i++)
#define set_dec(x)	    cout << fixed << setprecision(x);
#define endl            '\n'


const ll mod=1e9+7;

const int N=1e5+10,L=21,base=701;

int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
vector<int>g[N];
map<int,int>in[N],out[N],is[N];
ll ans;
int get_par(int v){
    if(par[v]==0)return v;
    return par[v]=get_par(par[v]);
}
void merg(int u,int v){
    u=get_par(u);
    v=get_par(v);
    if(u==v)return;
    if(sz[u]+in[u].size()+out[u].size()+is[u].size()>sz[v]+in[v].size()+out[v].size()+is[v].size())swap(u,v);
    par[u]=v;
    ans+=1ll*sz[v]*sz[u]*2;
    ans+=degin[v]*sz[u]+degin[u]*sz[v];
    degin[v]+=degin[u];
    out[v][u]=out[u][v]=in[v][u]=in[u][v]=0;
    vector<int>vec;
    for(pii p:out[u]){
        int uu=p.F,t=p.S;
        out[v][uu]+=t;
        if(in[v][uu])
            vec.pb(uu);
    }
    for(pii p:in[u]){
        int uu=p.F,t=p.S;
        in[uu][v]+=t;
        if(out[v][uu])
            vec.pb(uu);
    }
    for(int u:vec){
        ans-=out[v][u]*sz[u]+out[u][v]*sz[v];
        degin[v]-=out[u][v];
        degin[u]-=out[v][u];
        out[v][u]=out[u][v]=in[v][u]=in[u][v]=0;
    }
    sz[v]+=sz[u];
    for(pii p:is[u])is[v][p.F]++;
    out[u].clear();in[u].clear();is[u].clear();
    for(int u:vec)merg(u,v);
}
int main(){
    fast_io
    cin>>n>>m;
    for1(n)sz[i]=1;
    for(int _=0;_<m;_++,cout<<ans<<endl){
        int u,v;cin>>u>>v;
        int uu=u;
        u=get_par(u);v=get_par(v);
        if(u==v)continue;
        if(is[v][uu])continue;
        is[v][uu]=1;
        ans+=sz[v];
        out[u][v]++;
        in[v][u]++;degin[v]++;
        if(in[u][v]){
            ans-=1ll*out[u][v]*sz[v]+1ll*out[v][u]*sz[u];
            degin[v]-=out[u][v];
            degin[u]-=out[v][u];
            out[v][u]=out[u][v]=in[v][u]=in[u][v]=0;
            merg(u,v);
        }
    }

}

Compilation message (stderr)

joitter2.cpp:91:2: error: stray '#' in program
   91 | }#include<bits/stdc++.h>
      |  ^
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:11: error: 'bits' was not declared in this scope
   91 | }#include<bits/stdc++.h>
      |           ^~~~
joitter2.cpp:91:16: error: 'stdc' was not declared in this scope; did you mean 'std'?
   91 | }#include<bits/stdc++.h>
      |                ^~~~
      |                std
joitter2.cpp:91:3: error: 'include' does not name a type
   91 | }#include<bits/stdc++.h>
      |   ^~~~~~~
joitter2.cpp:112:10: error: redefinition of 'const ll mod'
  112 | const ll mod=1e9+7;
      |          ^~~
joitter2.cpp:22:10: note: 'const ll mod' previously defined here
   22 | const ll mod=1e9+7;
      |          ^~~
joitter2.cpp:114:11: error: redefinition of 'const int N'
  114 | const int N=1e5+10,L=21,base=701;
      |           ^
joitter2.cpp:24:11: note: 'const int N' previously defined here
   24 | const int N=1e5+10,L=21,base=701;
      |           ^
joitter2.cpp:114:20: error: redefinition of 'const int L'
  114 | const int N=1e5+10,L=21,base=701;
      |                    ^
joitter2.cpp:24:20: note: 'const int L' previously defined here
   24 | const int N=1e5+10,L=21,base=701;
      |                    ^
joitter2.cpp:114:25: error: redefinition of 'const int base'
  114 | const int N=1e5+10,L=21,base=701;
      |                         ^~~~
joitter2.cpp:24:25: note: 'const int base' previously defined here
   24 | const int N=1e5+10,L=21,base=701;
      |                         ^~~~
joitter2.cpp:116:5: error: redefinition of 'int A [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |     ^
joitter2.cpp:26:5: note: 'int A [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |     ^
joitter2.cpp:116:10: error: redefinition of 'int B [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |          ^
joitter2.cpp:26:10: note: 'int B [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |          ^
joitter2.cpp:116:15: error: redefinition of 'int C [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |               ^
joitter2.cpp:26:15: note: 'int C [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |               ^
joitter2.cpp:116:20: error: redefinition of 'int D [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                    ^
joitter2.cpp:26:20: note: 'int D [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                    ^
joitter2.cpp:116:25: error: redefinition of 'int n'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                         ^
joitter2.cpp:26:25: note: 'int n' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                         ^
joitter2.cpp:116:27: error: redefinition of 'int m'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                           ^
joitter2.cpp:26:27: note: 'int m' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                           ^
joitter2.cpp:116:29: error: redefinition of 'int k'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                             ^
joitter2.cpp:26:29: note: 'int k' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                             ^
joitter2.cpp:116:31: error: redefinition of 'int q'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                               ^
joitter2.cpp:26:31: note: 'int q' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                               ^
joitter2.cpp:116:33: error: redefinition of 'int dp [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                 ^~
joitter2.cpp:26:33: note: 'int dp [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                 ^~
joitter2.cpp:116:39: error: redefinition of 'int par [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                       ^~~
joitter2.cpp:26:39: note: 'int par [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                       ^~~
joitter2.cpp:116:46: error: redefinition of 'int sz [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                              ^~
joitter2.cpp:26:46: note: 'int sz [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                              ^~
joitter2.cpp:116:52: error: redefinition of 'int degin [100010]'
  116 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                                    ^~~~~
joitter2.cpp:26:52: note: 'int degin [100010]' previously declared here
   26 | int A[N],B[N],C[N],D[N],n,m,k,q,dp[N],par[N],sz[N],degin[N];
      |                                                    ^~~~~
joitter2.cpp:117:12: error: redefinition of 'std::vector<int> g [100010]'
  117 | vector<int>g[N];
      |            ^
joitter2.cpp:27:12: note: 'std::vector<int> g [100010]' previously declared here
   27 | vector<int>g[N];
      |            ^
joitter2.cpp:118:13: error: redefinition of 'std::map<int, int> in [100010]'
  118 | map<int,int>in[N],out[N],is[N];
      |             ^~
joitter2.cpp:28:13: note: 'std::map<int, int> in [100010]' previously declared here
   28 | map<int,int>in[N],out[N],is[N];
      |             ^~
joitter2.cpp:118:19: error: redefinition of 'std::map<int, int> out [100010]'
  118 | map<int,int>in[N],out[N],is[N];
      |                   ^~~
joitter2.cpp:28:19: note: 'std::map<int, int> out [100010]' previously declared here
   28 | map<int,int>in[N],out[N],is[N];
      |                   ^~~
joitter2.cpp:118:26: error: redefinition of 'std::map<int, int> is [100010]'
  118 | map<int,int>in[N],out[N],is[N];
      |                          ^~
joitter2.cpp:28:26: note: 'std::map<int, int> is [100010]' previously declared here
   28 | map<int,int>in[N],out[N],is[N];
      |                          ^~
joitter2.cpp:119:4: error: redefinition of 'll ans'
  119 | ll ans;
      |    ^~~
joitter2.cpp:29:4: note: 'll ans' previously declared here
   29 | ll ans;
      |    ^~~
joitter2.cpp:120:5: error: redefinition of 'int get_par(int)'
  120 | int get_par(int v){
      |     ^~~~~~~
joitter2.cpp:30:5: note: 'int get_par(int)' previously defined here
   30 | int get_par(int v){
      |     ^~~~~~~
joitter2.cpp:124:6: error: redefinition of 'void merg(int, int)'
  124 | void merg(int u,int v){
      |      ^~~~
joitter2.cpp:34:6: note: 'void merg(int, int)' previously defined here
   34 | void merg(int u,int v){
      |      ^~~~
joitter2.cpp:158:5: error: redefinition of 'int main()'
  158 | int main(){
      |     ^~~~
joitter2.cpp:68:5: note: 'int main()' previously defined here
   68 | int main(){
      |     ^~~~