Pagini recente » infoarena - comunitate informatica, concursuri de programare | Borderou de evaluare (job #1799360) | Cod sursa (job #2165153) | Cod sursa (job #881991) | Cod sursa (job #2760104)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n,m,t[100001],tip,a,b;
void leg (int a,int b)
{
if (t[a]>t[b])
t[a]=t[b];
else t[b]=t[a];
}
int inter (int a)
{
if (t[a]==a)
{
return a;
}
else return t[a]=inter(t[a]);
}
int main()
{
f>>n>>m;
for (int i=1; i<=n; i++)
t[i]=i;
for (int i=1; i<=m; i++)
{
f>>tip>>a>>b;
if (tip==1)
{
leg(inter(a),inter(b));
}
else
{
if (inter(a)==inter(b))
g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
return 0;
}