Pagini recente » Cod sursa (job #3202326) | Cod sursa (job #343782) | Cod sursa (job #1645297) | Cod sursa (job #1799620) | Cod sursa (job #1293806)
#include <iostream>
#include<fstream>
#define NMax 100005
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int n,m,F[NMax],rang[NMax];
void unite(int x, int y)
{
if(rang[x]<rang[y])
F[x]=y;
if(rang[y]<rang[x])
F[y]=x;
if(rang[x]==rang[y])
{
F[x]=y;
rang[y]++;
}
}
int find(int x)
{
while(x!=F[x])
x=F[x];
return x;
}
int main()
{
int choice,x,y;
fin>>n>>m;
int i;
for(i=1;i<=n;i++)
{
F[i]=i;
rang[i]=0;
}
for(i=1;i<=m;i++)
{
fin>>choice>>x>>y;
if(choice==1)
unite(find(x),find(y));
else
if(find(x)==find(y))
fout<<"DA\n";
else fout<<"NU\n";
}
return 0;
}