Pagini recente » Cod sursa (job #2095003) | Cod sursa (job #2931656) | Cod sursa (job #106593) | Cod sursa (job #965576) | Cod sursa (job #1946879)
#include<iostream>
#include<fstream>
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
const int N = 100001;
int boss[N],n,m;
void update(int a, int b)
{
int stiva[N], cnt=0;
while(a != boss[a])
{
stiva[++cnt] = a;
a = boss[a];
}
while(b != boss[b])
{
stiva[++cnt] = b;
b = boss[b];
}
for(int i=1; i<=cnt; ++i) boss[stiva[i]] = boss[b];
boss[a] = boss[b];
}
void query(int a, int b)
{
while(a != boss[a]) a = boss[a];
while(b != boss[b]) b = boss[b];
if(boss[a] == boss[b]) out<<"DA\n";
else out<<"NU\n";
}
void afis()
{
int i;
for(i=1; i<=n; ++i) cout<<i<<" "; cout<<"\n";
for(i=1; i<=n; ++i) cout<<boss[i]<<" "; cout<<"\n";
cout<<"\n";
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; ++i) boss[i] = i;
for(int i=0; i<m; ++i)
{
int tip,x,y;
in>>tip>>x>>y;
if(tip == 1) update(x, y);
else if(tip == 2) query(x, y);
}
return 0;
}