Pagini recente » Cod sursa (job #3275536) | Cod sursa (job #2020347) | Istoria paginii utilizator/kamikaze | Cod sursa (job #1180768) | Cod sursa (job #505046)
Cod sursa(job #505046)
#include<fstream.h>
#define NMAX 100005
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int h[NMAX], t[NMAX], n, m, i, op, x, y;
int stramos(int x)
{
while (t[x]!=0) x=t[x];
return x;
}
void adauga(int x, int y)
{
int rx, ry;
rx=stramos(x);ry=stramos(y);
if (rx!=ry)
{
if (h[rx]>h[ry])
{
t[ry]=rx;
if (h[ry]+1>h[rx]) h[rx]=h[ry]+1;
}
else
{
t[rx]=ry;
if (h[rx]+1>h[ry]) h[ry]=h[rx]+1;
}
}
}
void afiseaza(int x, int y)
{
int rx, ry;
rx=stramos(x);ry=stramos(y);
if (rx==ry) g<<"DA\n";
else g<<"NU\n";
}
int main()
{
f>>n>>m;
for (i=1; i<=n; ++i){h[i]=1; t[i]=0;}
for (i=1; i<=m; ++i)
{
f>>op>>x>>y;
if (op==1) adauga (x, y);
else afiseaza(x, y);
}
f.close();
g.close();
return 0;
}