模板:路径压缩并查集
#include<bits/stdc++.h>
using namespace std; #define ll long long #define N 2000001 #define maxn 5000 inline ll read() { ll f=1,x=0;char ch=getchar(); while(ch>'9'||ch<'0'){if(ch=='-')f=-1; ch=getchar();} while (ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return f*x; } int fa[N]; int find(int x) { if(fa[x]==x)return x; else return fa[x]=find(fa[x]); } void judge(int x,int y) { if(find(x)==find(y))printf("Y\n"); else printf("N\n"); } int main() { int n=read(),m=read(); for(int i=1;i<=n;i++) { fa[i]=i; } for(int i=1;i<=m;i++) { int opt=read();int a=read(),b=read(); if(opt==1) { fa[find(a)]=find(b); } else judge(a,b); } }

 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号