Submission #1235642

#TimeUsernameProblemLanguageResultExecution timeMemory
1235642hq77Monthly railway pass (LMIO18_menesinis_bilietas)C++20
0 / 100
200 ms3912 KiB
// Source: https://usaco.guide/general/io

#include <bits/stdc++.h>
using namespace std;
vector<int>Size,parent;
vector<int>rrank;

int get(int x){
    int root=parent[x];
    if(parent[root]==root)return root;
    return parent[x]=get(parent[x]);
}

void merge(int x,int y){
    int rootx=get(x);
    int rooty=get(y);
    // cout<<x<<" "<<y<<endl;
    if(rootx==rooty)return;
    if(rrank[rootx]<rrank[rooty]){
        parent[rootx]=rooty;
    }
    else if(rrank[rooty]<rrank[rootx]){
        parent[rooty]=rootx;
    }
    else{
        parent[rooty]=rootx;
        rrank[rootx]++;
    }
    // cout<<x<<" "<<parent[x]<<" "<<y<<" "<<parent[y]<<endl;
}


int main() {
	int n,m;cin>>n>>m;
    parent.resize(n);
    // Size.resize(n+1,1);
    rrank.resize(n+1,0);
    for(int i=0;i<n;i++){
        parent[i]=i;
    }
    for(int i=0;i<m;i++){
        int a,b;char t;cin>>a>>b>>t;
        if(t=='T'){
            merge(a-1,b-1);
        }
    }

    // for(int i=0;i<n;i++)cout<<parent[i]<<" ";
    // cout<<endl;

    sort(parent.begin(),parent.end());
    int cnt=0,maxx=0;
    for(int i=0;i<n;i++){
        if(i==0){cnt++;continue;}
        if(parent[i]!=parent[i-1]){
            maxx=max(maxx,cnt);
            cnt=0;
        }
        // cout<<cnt<<" "<<maxx<<endl;
        cnt++;
    }
    maxx=max(maxx,cnt);
    if(maxx==n)cout<<0;
    else cout<<n;
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...