Pagini recente » Cod sursa (job #88437) | Cod sursa (job #3189072) | Cod sursa (job #2672319) | Cod sursa (job #1423473) | Cod sursa (job #2112132)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
struct nod{
int val;
nod* next;
};
nod* v[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)
++l1;
for(q=v[b];q->next!=NULL;q=q->next)
++l2;
if(l1 > l2)
t = q->next = p;
else
t = p->next = q;
for(p=v[a];p->next!=NULL;p=p->next)
v[p->val] = t;
for(q=v[b];q->next!=NULL;q=q->next)
v[q->val] = 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;
}