Pagini recente » Cod sursa (job #2018239) | Istoria paginii runda/concurs_11_12_02_23 | Cod sursa (job #1053721) | concurs_pd | Cod sursa (job #2704789)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int a,b,caz,x,y;
int Tata[100005],Dimensiune[100005];
int Find(int x)
{
if(x!=Tata[x])
Tata[x]=Find(Tata[x]);
return Tata[x];
}
void Unire(int x,int y)
{
x=Find(x);
y=Find(y);
if(Dimensiune[x]<Dimensiune[y])
{
Dimensiune[y]+=Dimensiune[x];
Tata[x]=y;
}
else
{
Dimensiune[x]+=Dimensiune[y];
Tata[y]=x;
}
}
int main()
{
f>>a>>b;
for(int i=1;i<=b;i++)
{
Tata[i]=i;
Dimensiune[i]=1;
}
for(int i=1;i<=b;i++)
{
f>>caz>>x>>y;
if(caz==1)
{
int tata_x=Find(x);
int tata_y=Find(y);
if(tata_x!=tata_y)
{
Unire(x,y);
}
}
else
{
int tata_x=Find(x);
int tata_y=Find(y);
if(tata_x==tata_y)
g<<"DA"<<'\n';
else g<<"NU"<<'\n';
}
}
f.close();
g.close();
return 0;
}