Pagini recente » Cod sursa (job #971956) | Cod sursa (job #1997427) | Cod sursa (job #2452992) | Cod sursa (job #1777511) | Cod sursa (job #2942384)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[100002], ord[100002],i;
void init_tata(int n, int tata[])
{
for(i=0; i<n; i++)
{
tata[i]=i;
}
}
int Reprez(int u)
{
if(tata[u]!=u)
tata[u] = Reprez(tata[u]);
return tata[u];
}
void reuneste(int u, int v)
{
int ru=Reprez(u);
int rv=Reprez(v);
if (ord[ru]>ord[rv])
{
tata[rv] = ru;
ord[ru] += ord[rv];
}
else
{
tata[ru] = rv;
ord[rv] += ord[ru];
}
}
void citire()
{
int n,m,cod,u,v;
fin>>n>>m;
init_tata(n,tata);
for(i=0; i<m; i++)
{
fin>>cod>>u>>v;
if(cod==1)
reuneste(u,v);
else
{
if(Reprez(u)==Reprez(v))
fout<<"DA\n";
else fout<<"NU\n";
}
}
}
int main()
{
citire();
return 0;
}