Pagini recente » Cod sursa (job #1150396) | Cod sursa (job #3146731) | Cod sursa (job #270460) | Cod sursa (job #2134661) | Cod sursa (job #2112229)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
struct nod{
int val;
nod* next;
};
nod* v[100001];
int u1[100001];
int u2[100001];
void connect(int a,int b){
nod *p,*q,*t;
int l2 = 0;
int l1 = 0;
for(p=v[a];p->next!=NULL;p=p->next)
u1[l1] = p->val,
++l1;
for(q=v[b];q->next!=NULL;q=q->next)
u2[l2] = q->val,
++l2;
if(l1 > l2)
t = q->next = p;
else
t = p->next = q;
for(;l1>=0;--l1)
v[u1[l1]] = t;
for(;l2>=0;--l2)
v[u2[l2]] = t;
v[a] = v[b] = t;
}
int main()
{
int i,n,m;
int x,y,z;
fin >> n >> m;
for(i=1;i<=n;++i){
v[i] = new nod;
v[i]->val = i;
v[i]->next = NULL;
}
for(i=1;i<=m;++i){
fin >> x >> y >> z;
if(x == 1)
connect(y,z);
else
if( v[y]->val == v[z]->val )
fout << "DA\n";
else
fout << "NU\n";
}
;
return 0;
}