Pagini recente » Cod sursa (job #1937746) | Cod sursa (job #1601964) | Cod sursa (job #180882) | Cod sursa (job #2109549) | Cod sursa (job #1890844)
#include<fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int *sp;//retin multimile
int n,m,x,y,cer;
int searc(int x)//caut multimea in care se afla x
{
if(sp[x]==x)
return x;
else
return sp[x]=searc(sp[x]);
}
void unite(int x,int y)//unesc multimea in care se afla x cu multimea in care se afla y
{
int tx=searc(x);
int ty=searc(y);
sp[tx]=ty;
}
int main()
{
f>>n>>m;
sp=new int[n+1];
for(int i=1;i<=n;i++)//formez cele n multimi cu cate un element
sp[i]=i;
while(m)
{
m--;
f>>cer>>x>>y;
if(cer==1)//unesc multimile x si y
unite(x,y);
else
{
int tx=searc(x);
int ty=searc(y);
if(tx==ty)//verific daca cele 2 x si y se afla in aceeasi multime
g<<"DA\n";
else
g<<"NU\n";
}
}
return 0;
}