#include<bits/stdc++.h>
using namespace std;
int a,b,c;int f[10005],n,m;
int find(int x){
if(f[x]==x)return x;
else return f[x]=find(f[x]);//用递归的方式找到祖宗卧槽好厉害
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=1;i<=m;i++){
cin>>a>>b>>c;
if(a==1) f[find(b)]=find(c);
else {
if(find(b)==find(c))printf("Y\n");
else printf("N\n");
}
}
return 0;
}
模板
Node road[200005]
bool operator < (road a,road b){return a<b;}//比较结构体内容大小
int find(int x){
if(f[x]==x)return x;
else return f[x]=find(f[x]);
}
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
f[i]=i;
}
for(int i=1;i<=m;i++){
cin>>road[i].t>>road[i].x>>road[i].y;
}
sort(road+1,road+m+1);
for(int i=1;i<=m;i++){
int h=find(road[i].x);int j=find(road[i].y);
if(h==j)countinue;//如果同源就不管
f[h]=j;//不同源就让x的祖宗变为y
num++;//修好的公路数+1
ans=max(ans,road[i],road[i].t);//取公共最长时间
}
if(num!=n-1)printf("-1\n");else printf("%d\n",ans);
return 0;
}