Pagini recente » Monitorul de evaluare | Monitorul de evaluare | Monitorul de evaluare | ONIS 2015, Runda 2 | Cod sursa (job #1193669)
#include <cstdio>
using namespace std;
#define MAX 100001
struct nod{
int info;
nod *adr;
} v[MAX], *p;
int n, m;
int main()
{
int i, cod, x, y, a, b;
freopen("disjoint.in", "r", stdin);
freopen("disjoint.out", "w", stdout);
scanf("%d%d", &n, &m);
for(i=1; i<=n; i++){
p = new nod;
v[i].adr = p; v[i].info = 1;
p->info = i; p->adr=NULL;
}
for(i=1; i<=m; i++){
scanf("%d%d%d", &cod, &x, &y);
if(cod==1){
a = v[x].adr->info;
b = v[y].adr->info;
if(v[a].info<v[b].info){
a = v[y].adr->info;
b = v[x].adr->info;
}
p = v[b].adr;
while(p->adr!=NULL){
p->info = a;
p = p->adr;
}
p->info = a;
p->adr = v[a].adr;
v[a].adr = v[b].adr;
}
else{
if(v[x].adr->info==v[y].adr->info)
printf("DA\n");
else printf("NU\n");
}
}
return 0;
}