Pagini recente » Cod sursa (job #668910) | Cod sursa (job #3337004) | Cod sursa (job #961715) | Cod sursa (job #3336454) | Cod sursa (job #1605799)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
using namespace std;
vector <int> v[100001];
int vec[100001];
void mutare(int a, int b){ // muta multimea b in a.
int c=vec[b];
while(v[c].size()>0){
vec[v[b].back()]=a;
v[vec[a]].push_back(v[c].back());
v[c].pop_back();
}
}
int main()
{
FILE *fin, *fout;
int n,k,i,j,op,x;
fin=fopen("disjoint.in","r");
fout=fopen("disjoint.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=0;i<n;i++){
vec[i]=i;
v[i].push_back(i);
}
for(x=0;x<k;x++){
fscanf(fin,"%d%d%d",&op,&i,&j);
i--;
j--;
if(op==1){
if(v[vec[i]].size()<v[vec[j]].size())
mutare(j,i);
else
mutare(i,j);
}else{
if(vec[i]==vec[j])
fprintf(fout,"DA\n");
else
fprintf(fout,"NU\n");
}
}
fclose(fin);
fclose(fout);
return 0;
}