Cod sursa(job #1011127)
| Utilizator | Data | 16 octombrie 2013 11:17:37 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 10 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.94 kb |
#include <cstdio>
int n,k;
const int Q=100007;
int t[Q];
int radacinare(int x)
{
if(t[x]==0)
return x;
t[x]=radacinare(t[x]);
return t[x];
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d%d",&n,&k);
int l,x,y,act;
for(int i=1; i<=k; i++)
{
scanf("%d%d%d",&l,&x,&y);
if(x>y)
{
act=x;
x=y;
y=act;
}
if(l==1)
{
act=radacinare(x);
//t[y]=act;
for(int j=x+1 ; j<=y ; j++)
{
t[j]=act;
}
}
else
{
act=radacinare(y);
if(act<=x)
{
printf("DA\n");
}
else
{
printf("NU\n");
}
}
}
return 0;
}
