update
This commit is contained in:
parent
a001973d25
commit
7dde412ebf
@ -52,7 +52,24 @@ namespace s1{
|
|||||||
namespace s2{
|
namespace s2{
|
||||||
char c[maxn];
|
char c[maxn];
|
||||||
}
|
}
|
||||||
|
namespace s3{
|
||||||
|
char c[maxn];
|
||||||
|
struct USF{
|
||||||
|
ll f[maxn];
|
||||||
|
USF(){
|
||||||
|
for(ll i{1};i<=n;i++){
|
||||||
|
f[i]=i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ll find(ll const&u){
|
||||||
|
if(f[u]==u)return u;
|
||||||
|
return f[u]=find(f[u]);
|
||||||
|
}
|
||||||
|
void merge(ll const &u,ll const &v){
|
||||||
|
f[find(u)]=find(v);
|
||||||
|
}
|
||||||
|
}usf;
|
||||||
|
}
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
|
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
|
||||||
@ -89,6 +106,38 @@ int main(){
|
|||||||
cout<<ans<<'\n';
|
cout<<ans<<'\n';
|
||||||
}
|
}
|
||||||
}else if(c==5||c==6){
|
}else if(c==5||c==6){
|
||||||
|
while(t--){
|
||||||
|
cin>>n>>m;
|
||||||
|
memset(s3::c, 'T', sizeof(s3::c));
|
||||||
|
|
||||||
|
ll ans{};
|
||||||
|
for(ll i{1};i<=m;i++){
|
||||||
|
cin>>v[i];
|
||||||
|
if(v[i]=='U'){
|
||||||
|
cin>>tmp;
|
||||||
|
s3::c[tmp]='U';
|
||||||
|
}else{
|
||||||
|
cin>>vi[i]>>vj[i];
|
||||||
|
s3::usf.merge(vi[i],vj[i]);
|
||||||
|
s3::c[vi[i]]=s3::c[vj[i]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
unordered_map<ll,pair<ll,bool>> mm;
|
||||||
|
for(ll i{1};i<=n;i++){
|
||||||
|
mm[s3::usf.find(i)].first++;
|
||||||
|
if(s3::c[i]=='U'){
|
||||||
|
mm[s3::usf.find(i)].second=true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for(auto [k,v]:mm){
|
||||||
|
if(v.second){
|
||||||
|
ans+=v.first;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cout<<ans<<'\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// else if(c==7||c==8){
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user