Skip to content

Commit f23d0bc

Browse files
authored
Create 1676-Road Construction.cpp
DSU
1 parent 6abf419 commit f23d0bc

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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+
}

0 commit comments

Comments
 (0)