Pagini recente » Cod sursa (job #1964032) | Cod sursa (job #686117) | Cod sursa (job #2436087) | Cod sursa (job #2005115) | Cod sursa (job #2954983)
#include <fstream>
using namespace std;
ifstream fin("disjoint.in");
ofstream fout("disjoint.out");
int tata[100001];
int h[100001];
int Reprez(int u)
{
if(tata[u] == 0)
return u;
tata[u] = Reprez(tata[u]);
}
void Reuneste(int u, int v)
{
int ru = Reprez(u);
int rv = Reprez(v);
if(h[ru] > h[rv])
{
tata[rv] = ru;
}
else
{
tata[ru] = rv;
if(h[ru]==h[rv])
h[rv] = h[rv] + 1;
}
}
int main()
{
int n,m;
fin>>n>>m;
for(int i = 0; i<n; ++i)
{
tata[i] = 0;
h[i] = 0;
}
for(int i = 0; i<m; ++i)
{
int c, u, v;
fin>>c>>u>>v;
if(c == 2)
if(Reprez(u)==Reprez(v))
fout<<"DA\n";
else
fout<<"NU\n";
else
Reuneste(u,v);
}
return 0;
}