File tree Expand file tree Collapse file tree 1 file changed +94
-0
lines changed
Expand file tree Collapse file tree 1 file changed +94
-0
lines changed Original file line number Diff line number Diff line change 1+ // JAI BAJARANG BALI
2+
3+ // manitianajay45
4+
5+ // give me some sunshine, give me some rain , give me another chance to grow up once again....
6+
7+ // sab moh maya hai....
8+
9+
10+ // DSU
11+
12+
13+ #include < bits/stdc++.h>
14+ using namespace std ;
15+
16+ #define ll long long
17+ #define mod 1000000007
18+ ll n,m;
19+
20+ vector<ll> fn (200005 ,0 );
21+ vector<ll> cnt (2000005 ,0 );
22+
23+ vector<ll> vec[200005 ];
24+
25+
26+ ll mx;
27+ ll sz=1 ;
28+
29+
30+ void unite (ll u,ll v){
31+ // cout<<u<<" st"<<v<<endl;
32+ u=fn[u];
33+ v=fn[v];
34+ // cout<<u<<" "<<v<<endl;
35+
36+ if (u!=v){
37+ if (cnt[u]!=0 && cnt[v]!=0 ){
38+ mx--;
39+ }
40+ if (cnt[u]<=cnt[v]){
41+ cnt[v]+=cnt[u];
42+ cnt[u]=0 ;
43+ sz=max (sz,cnt[v]);
44+
45+ for (auto i:vec[u]){
46+ fn[i]=v;
47+ vec[v].push_back (i);
48+ }
49+ }else {
50+ cnt[u]+=cnt[v];
51+ cnt[v]=0 ;
52+ sz=max (sz,cnt[u]);
53+
54+ for (auto i:vec[v]){
55+ fn[i]=u;
56+ vec[u].push_back (i);
57+ }
58+ }
59+ }
60+ }
61+
62+
63+
64+
65+
66+
67+ int main ()
68+ {
69+ ios_base::sync_with_stdio (false );
70+ cin.tie (NULL );
71+
72+ // ll n;
73+ cin >> n>>m;
74+
75+ for (ll i=1 ;i<=n;i++){
76+ fn[i]=i;
77+ cnt[i]=1 ;
78+ vec[i].push_back (i);
79+ }
80+ // cout<<mx<<endl;
81+ mx=n;
82+
83+ for (ll i = 0 ; i <m; i++)
84+ {
85+ ll u,v;
86+ cin>>u>>v;
87+ // mx--;
88+ unite (u,v);
89+ cout<<mx<<" " <<sz<<endl;
90+
91+ }
92+
93+ return 0 ;
94+ }
You can’t perform that action at this time.
0 commit comments