Pagini recente » Cod sursa (job #2123112) | Cod sursa (job #3271461) | Cod sursa (job #2931499) | Cod sursa (job #815306) | Cod sursa (job #2871978)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int tata[100001],d[100001];
int tata_multime(int x)
{if (x!=tata[x]) tata[x]=tata_multime(tata[x]);
return tata[x];
}
void unire(int x, int y)
{x=tata_multime(x);
y=tata_multime(y);
if (d[x]<d[y]) {d[y]+=d[x];
tata[x]=y;
}
else {d[x]+=d[y];
tata[y]=x;
}
}
int main()
{int c,n,m,a,b;
f>>n>>m;
for (int i=1;i<=n;i++) d[i]++,tata[i]=i;
for (int i=1;i<=m;i++) {f>>c>>a>>b;
if (c==1) unire(a,b);
else {if (tata_multime(a)==tata_multime(b)) g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
}