Pagini recente » Cod sursa (job #2153315) | Cod sursa (job #1940741) | Cod sursa (job #2921228) | Cod sursa (job #1995281) | Cod sursa (job #2736412)
#include <iostream>
#include <fstream>
using namespace std;
int n,m,i,t[100005],c,a,b,t1,t2;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int tata(int x)
{
if (t[x]==x) return x;
else tata(t[x]);
}
void uniform(int a, int t1)
{
if (t[a]==t1) return;
else
{
t[a]=t1;
uniform(t[a],t1);
}
}
int main()
{
in>>n>>m;
for (i=1;i<=n;i++)
t[i]=i;
for (i=1;i<=m;i++)
{
in>>c;
if (c==1)
{
in>>a>>b;
t1=tata(a);
uniform(a,t1);
t2=tata(b);
uniform(b,t1);
if (t1!=t2) t[t2]=t1;
}
else
{
in>>a>>b;
t1=tata(a);
t2=tata(b);
uniform(a,t1);
uniform(b,t2);
if (t1==t2) out<<"DA"<<endl;
else out<<"NU"<<endl;
}
}
}