Pagini recente » Cod sursa (job #2354591) | Cod sursa (job #2883056) | Cod sursa (job #491880) | Cod sursa (job #2056690) | Cod sursa (job #1387158)
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int N,M,i,j,tip,x,yst,yfn,temp;
int a[100005][3];
void initializare();
int main()
{
f>>N>>M;
initializare();
for (int cont1=0;cont1<M;++cont1)
{
f>>tip>>x>>yst;
if (x>yst)
swap(x,yst);
switch (tip)
{
case 1:
{
while (a[yst][1]!=0)
yst=a[yst][1];
i=x;
temp=0;
while (a[i][1]!=0)
{
temp=i;
a[i][0]=a[yfn][0];
i=a[i][1];
}
a[i][0]=a[yfn][0];
if (temp!=0)
a[i][2]=temp;
i=x;
while (a[i][2]!=0)
{
a[i][0]=a[yfn][0];
i=a[i][2];
}
a[i][0]=a[yfn][0];
a[i][2]=yst;
a[yst][1]=i;
/*for (i=1;i<=N;++i)
{
for (j=0;j<3;++j)
cout<<a[i][j]<<' ';
cout<<'\n';
}
cout<<"\n\n";*/
break;
}
case 2:
{
if (a[x][0]==a[yst][0])
g<<"DA"<<'\n';
else
g<<"NU"<<'\n';
}
}
}
f.close();g.close();
return 0;
}
void initializare()
{
for (i=1;i<=N;++i)
a[i][0]=i;
}