Pagini recente » Cod sursa (job #2089685) | Cod sursa (job #2126503) | Cod sursa (job #916901) | Cod sursa (job #614184) | Cod sursa (job #2781842)
#include <fstream>
#define nmax 100005
using namespace std;
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int rad[nmax], n, m, cod, x, y, nrfii[nmax], radx, rady;
int calc_rad(int a)
{
if(rad[a]==0)
return a;
else
return(calc_rad(rad[a]));
}
int main()
{
in>>n>>m;
for(int i=1; i<=n; i++)
{
nrfii[i] = 1;
}
for(int i=1; i<=m; i++)
{
in>>cod>>x>>y;
if(cod==1)
{
radx = calc_rad(x) ;
rady = calc_rad(y) ;
if(nrfii[radx]>nrfii[rady])
{
nrfii[radx] += nrfii[rady];
rad[rady] = radx;
}
else
if(nrfii[radx]<nrfii[rady])
{
nrfii[rady] += nrfii[radx];
rad[radx] = rady;
}
else
{
nrfii[radx] += nrfii[rady];
rad[rady] = radx;
}
}
if(cod==2)
{
radx = calc_rad(x) ;
rady = calc_rad(y) ;
if(radx == rady)
out<<"DA\n";
else
out<<"NU\n";
}
}
return 0;
}