并查集

貢獻者:bdcdcdc 類別:代码 時間:2019-07-23 16:51:02 收藏數:3 評分:1
返回上页 舉報此文章
请选择举报理由:




收藏到我的文章 改錯字
#include<bits/stdc++.h>
using namespace std;
#define N 10005
#define For(i,x,y)for(i=x;i<=y;i++)
int dep[N],fa[N];
int read()
{
int A;
bool K;
char C;
C=A=K=0;
while(C<'0'||C>'9')K|=C=='-',C=getchar();
while(C>'/'&&C<':')A=(A<<3)+(A<<1)+(C^48),C=getchar();
return(K?-A:A);
}
void write(int X)
{
if(X<0)putchar('-'),X=-X;
if(X>9)write(X/10);
putchar(X%10+48);
}
int find(int p)
{
if(fa[p]!=p)fa[p]=find(fa[p]);
return fa[p];
}
void unite(int u,int v)
{
int a=find(u),b=find(v);
if(a==b)return;
if(dep[a]<=dep[b])fa[a]=b;
else fa[b]=a;
if(dep[a]==dep[b])dep[b]++;
}
int main()
{
int n,m,i,x,y,z;
n=read(),m=read();
For(i,1,n)fa[i]=i,dep[i]=1;
For(i,1,m)
{
z=read(),x=read(),y=read();
if(z==1)unite(x,y);
else puts(find(x)==find(y)?"Y":"N");
}
return 0;
}
声明:以上文章均为用户自行添加,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。
文章熱度:
文章難度:
文章質量:
說明:系統根據文章的熱度、難度、質量自動認證,已認證的文章將參與打字排名!

本文打字排名TOP20

用户更多文章推荐