Pagini recente » Cod sursa (job #1858904) | Cod sursa (job #45511) | Cod sursa (job #3289356) | Cod sursa (job #379173) | Cod sursa (job #2957415)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
const int NMAX=500;
int T[NMAX+1];
/**
T[i] = submultimea din care face parte nodul i (reprezentare ca o padure de multimi disjuncte
*/
int Find(int i)///cautarea radacinii cu compresia drumului
{
if(T[i]==0)
return i;
T[i]=Find(T[i]);
return T[i];
}
inline void Union(int cx,int cy)
{
T[cy]=cx;
}
int main()
{
int N,M,op,x,y,cx,cy;
f>>N>>M;
while(M--)
{
f>>op>>x>>y;
cx=Find(x);
cy=Find(y);
if(op==1)
{
if(cx!=cy)
Union(cx,cy);
}
else
{
if(cx==cy)
g<<"DA\n";
else g<<"NU\n";
}
}
return 0;
}