Submission #1182716

#TimeUsernameProblemLanguageResultExecution timeMemory
1182716mertbbmMaking Friends on Joitter is Fun (JOI20_joitter2)C++20
0 / 100
2 ms4928 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ld long double #define show(x,y) cout << y << " " << #x << endl; #define show2(x,y,i,j) cout << y << " " << #x << " " << j << " " << #i << endl; #define show3(x,y,i,j,p,q) cout << y << " " << #x << " " << j << " " << #i << " " << q << " " << #p << endl; #define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl; typedef pair<int,int>pii; mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count()); set<int>se[100005]; struct DSU{ vector<int>e; void init(int n){ e=vector<int>(n,-1); } int get(int x){ return e[x]<0?x:e[x]=get(e[x]); } bool unite(int x, int y){ x=get(x); y=get(y); if(x==y) return 1; if(e[x]>e[y]) swap(x,y); if(se[x].size()<se[y].size()) swap(se[x],se[y]); for(auto it:se[y]) se[x].insert(it); e[x]+=e[y]; e[y]=x; return 0; } }; int f(int a){ return a*(a-1); } void solve(){ int n,m; cin >> n >> m; int a,b; int counter=0; DSU dsu; dsu.init(n+5); for(int x=0;x<m;x++){ cin >> a >> b; int hold=dsu.get(b); int hold2=dsu.get(a); //cout << hold << " " << hold2 << "\n"; if(hold==hold2){} else if(se[hold2].find(b)!=se[hold2].end()){ //bidirectional counter-=(-dsu.e[hold])*(se[hold].size()); counter-=(-dsu.e[hold2])*(se[hold2].size()); counter-=f(-dsu.e[hold]); counter-=f(-dsu.e[hold2]); //cout << counter << " counter\n"; dsu.unite(a,b); hold=dsu.get(a); if(se[hold].find(a)!=se[hold].end()) se[hold].erase(a); if(se[hold].find(b)!=se[hold].end()) se[hold].erase(b); counter+=f(-dsu.e[hold]); counter+=(-dsu.e[hold])*(se[hold].size()); } else{ if(se[hold].find(a)==se[hold].end()){ se[hold].insert(a); counter+=-dsu.e[hold]; } } cout << counter << "\n"; } } int32_t main(){ ios::sync_with_stdio(0); cin.tie(0); int t=1; //cin >> t; while(t--){ solve(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...