Pagini recente » Monitorul de evaluare | Profil ezluci | Monitorul de evaluare | Istoria paginii utilizator/costinoana | Cod sursa (job #1598678)
#include <cstdio>
using namespace std;
#define Nmax 100050
int p[Nmax] , n , m ;
struct poz
{
int operatie , prim , sec ;
};
poz v[100050] ;
void init ()
{
for ( int i = 1 ; i <= n ; ++i )
{
p[i] = i ;
}
}
int find_node ( int nod )
{
if ( p[nod] == nod ) return nod;
p[nod] = find_node(p[nod]);
return p[nod];
}
void union_node ( int x , int y )
{
p[find_node(x)] = p[find_node(y)] ;
}
int main()
{
freopen("disjoint.in","r",stdin);
freopen("disjoint.out","w",stdout);
scanf("%d %d",&n,&m);
init();
for ( int i = 1 ; i <= m ; i++ )
{
scanf("%d %d %d",&v[i].operatie,&v[i].prim,&v[i].sec);
if ( v[i].operatie == 1 )
{
union_node(v[i].prim,v[i].sec) ;
}
else if ( find_node(v[i].prim) == find_node(v[i].sec) ) printf("DA\n");
else
{
printf("NU\n");
}
}
}