Pagini recente » Cod sursa (job #1537358) | Cod sursa (job #1222666) | Cod sursa (job #53251) | Cod sursa (job #2438748) | Cod sursa (job #1583257)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,Rank[100001],p[100001],i,t,x,y,y1,y2;
void reunion(int x,int y)
{
if (Rank[x]>Rank[y])
p[y]=x;
else {
p[x]=y;
if (Rank[x]==Rank[y])
Rank[y]++;
}
}
int findset(int x)
{
while(p[x]!=x)
x=p[x];
return x;
}
int main()
{
f>>n>>m;
for (i=1;i<=n;i++)
p[i]=i;
for (i=1;i<=m;i++)
{
f>>t>>x>>y;
if (t==1)
y1=findset(x),y2=findset(y),reunion(y1,y2);
else
{
y1=findset(x),
y2=findset(y);
if (y1==y2) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}