Pagini recente » Profil iliaaaaaaaaaaaaaa | Cod sursa (job #461323) | Cod sursa (job #2341811) | Cod sursa (job #1023430) | Cod sursa (job #2837380)
//#include <fstream>
//#include <vector>
//
//#define NMAX 100004
//
//using namespace std;
//ifstream cin("disjoint.in");
//ofstream cout("disjoint.out");
//
////vector <int> a[NMAX];
//
//int n,i,x,y,cer,m;
//int tata[NMAX],h[NMAX];
//
//int Find_compr(int x);
//void Union(int x, int y);
//
//int main()
//{
// cin>>n>>m;
// for(i=1; i<=m; i++)
// {
// cin>>cer>>x>>y;
// if(cer==1)
// {
// ///union
// Union(x,y);
// }
// if(cer==2)
// {
// ///find
// if(Find_compr[x]==Find_compr[y])
// cout<<"DA"<<'\n';
// else
// cout<<"NU"<<'\n';
//
// }
// }
//
//
// return 0;
//}
//
//
//int Find_compr(int x)
//{
// int r;
// r=x;
// while(tata[r])
// r=tata[r];
// while(tata[x])
// {
// int r2=tata[x];
// tata[x]=r;
// x=r2;
// }
// return r;
//}
//
//void Union(int x, int y)
//{
// x = Find_compr(x);
// y = Find_compr(y);
// if(x==y)
// return;
// if(h[x]<h[y])
// {
// tata[x]=y;
// }
// if(h[x]>h[y])
// tata[y]=x;
// if(h[x]==h[y])
// {
// tata[x]=y;
// h[y]++;
// }
//}
//
#include <fstream>
#define NMAX 100002
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[NMAX],h[NMAX];
void citire();
int gasire(int x);
void unire(int x, int y);
int n,m;
int main()
{
citire();
return 0;
}
void citire()
{
int i,j,tip,x,y;
fin>>n>>m;
for(j=1;j<=m;j++)
{
fin>>tip>>x>>y;
if(tip==1)
{
unire(x,y);
}
else
{
if(gasire(x)!=gasire(y))
fout<<"NU"<<'\n';
else
fout<<"DA"<<'\n';
}
}
}
int gasire(int x)
{
int r;
r=x;
while(tata[r])
r=tata[r];
while(tata[x])
{
int r2=tata[x];
tata[x]=r;
x=r2;
}
return r;
}
void unire(int x, int y)
{
x=gasire(x);
y=gasire(y);
if(x==y)
return;
if(h[x]<h[y])
{
tata[x]=y;
}
if(h[x]>h[y])
tata[y]=x;
if(h[x]==h[y])
{
tata[x]=y;
h[y]++;
}
}