#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
class DisjointSet{
vector<int> rank,parent;
public:
DisjointSet(int n){
rank.resize(n+1,0);
parent.resize(n+1);
for(int i=0;i<n;i++){
parent[i]=i;
}
}
int findUPar(int node){
if(node== parent[node]) return node;
else return parent[node]=findUPar(parent[node]);
}
void unionByRank(int u,int v){
int pu=findUPar(u);
int pv=findUPar(v);
if(pu==pv) return;
if(rank[pu]<rank[pv]){
parent[pu]=pv;
}
else if(rank[pu]>rank[pv]){
parent[pv]=pu;
}
else{
parent[pv]=pu;
rank[pu]++;
}
}
};
int main() {
int n,q;
cin>>n>>q;
DisjointSet ds(n+1);
vector<pair<int,int>> p(q);
vector<char> t(q);
for(int i=0;i<q;i++){
cin>>p[i].fi>>p[i].se>>t[i];
ds.unionByRank(p[i].fi,p[i].se);
}
vector<int> cnt(n+1,0);
for(int i=1;i<=n;i++){
cnt[ds.findUPar(i)]++;
}
int ans=0;
for(int i=0;i<n+1;i++){
ans=max(ans,cnt[i]);
}
cout<<ans<<endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |