Pagini recente » Cod sursa (job #3291653) | Cod sursa (job #2293349) | Cod sursa (job #1108021) | Cod sursa (job #3273591) | Cod sursa (job #2600541)
#include <bits/stdc++.h>
#define NMAX 100200
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int rang[NMAX],t[NMAX];
int radacina(int x)
{
if(x==t[x]) return t[x];
t[x]=radacina(t[x]);
return t[x];
}
void unire(int x, int y)
{
if(rang[x]>rang[y])
t[y]=x;
else t[x]=y;
if(rang[x]==rang[y])
rang[y]++;
}
int main()
{
int x,y,cod,n,m;
in>>n>>m;
for(int i=1; i<=n; ++i)
{
t[i]=i;
rang[i]=1;
}
for(int i=1; i<=m; ++i)
{
in>>cod>>x>>y;
if(cod==1)
unire(radacina(x),radacina(y));
else
{
if(radacina(x)==radacina(y))
out<<"DA";
else out<<"NU";
out<<"\n";
}
}
return 0;
}