Pagini recente » Cod sursa (job #3123433) | Cod sursa (job #3206600) | Cod sursa (job #587597) | Cod sursa (job #722915) | Cod sursa (job #3273957)
#include <bits/stdc++.h>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int N=100010;
int n,m,T[N];
int getRoot(int nod)
{
if(nod==T[nod])
return nod;
T[nod]=getRoot(T[nod]);
return T[nod];
}
int main()
{
f>>n>>m;
for(int i=1;i<=n;i++)
T[i]=i;
for(int i=1;i<=m;i++)
{
int x,y,tip;
f>>tip>>x>>y;
x=getRoot(x);
y=getRoot(y);
while(y!=T[y])y=T[y];
if(tip==1)///reuniune
T[x]=y; /// o radacina devine fiul altei radacini - arrborii s-au reunit
else///interogare
{
if(x==y) /// daca am ajuns la aceeasi radacina
g<<"DA\n";///suntem in aceeasi multime
else///altfel
g<<"NU\n";///suntem in multimi diferite
}
}
return 0;
}
R
- 1
-
- 2
3