Pagini recente » Cod sursa (job #2043004) | Cod sursa (job #3160463) | Cod sursa (job #2437708) | Cod sursa (job #1759132) | Cod sursa (job #2033083)
#include <fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n,m;
int tata[100005],d[100005];
int find(int node)
{
int r=tata[node];
while(tata[r]!=r)
{
r=tata[r];
}
return r;
}
void join(int r1, int r2)
{
if(d[r1]==d[r2])
{
tata[r1]=r2;
d[r2]++;
}
else if(d[r1]>d[r2])
tata[r2]=r1;
else tata[r1]=r2;
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; i++)
tata[i]=i,d[i]=1;
int op,x,y;
while(m--)
{
in>>op>>x>>y;
if(op==1) join(find(x),find(y));
else if(find(x)==find(y)) out<<"DA"<<'\n';
else out<<"NU"<<'\n';
}
return 0;
}