Pagini recente » Cod sursa (job #174475) | Cod sursa (job #775849) | Cod sursa (job #1302663) | Cod sursa (job #1216490) | Cod sursa (job #2750375)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int const MAX=1e5+1;
int tata[MAX],inaltime[MAX];
int n,m;
int get_king(int x)
{
if(x == tata[x])
return x;
tata[x]=get_king(tata[x]);
return tata[x];
}
int main() {
fin>>n>>m;
for(int i =1; i <= n; ++i)
tata[i]=i;
for(int i =1; i <= m; ++i)
{
int op,x,y;
fin>>op>>x>>y;
int a1=get_king(x);
int a2=get_king(y);
if(op == 1)
{
if(a1 != a2){
if(inaltime[a1] > inaltime[a2])
{
tata[a2]=a1;
}
else
if(inaltime[a2] > inaltime[a1])
{
tata[a1]=a2;
}
else
{
tata[a1]=a2;
++inaltime[a2];
}
}
}
else
{
if(a1 == a2)
fout<<"DA"<<endl;
else
fout<<"NU"<<endl;
}
}
return 0;
}