Pagini recente » Cod sursa (job #863961) | Cod sursa (job #1943179) | Cod sursa (job #772325) | Cod sursa (job #1965710) | Cod sursa (job #2686408)
#include <fstream>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
struct nod
{
int parent;
int depth;
} graf[100005];
int n, m;
int getRoot(int node)
{
if(graf[node].parent == 0)
return node;
int parent = getRoot(graf[node].parent);
graf[node].parent = parent;
return parent;
}
void read()
{
f>>n>>m;
int c, x, y;
for(int i = 0; i<m; i++)
{
f>>c>>x>>y;
if(c == 1)
{
int r1 = getRoot(x);
int r2 = getRoot(y);
if(graf[r1].depth == graf[r2].depth)
{
graf[r2].parent = r1;
graf[r1].depth++;
}
else if(graf[r1].depth > graf[r2].depth)
{
graf[r2].parent = r1;
}
else if(graf[r1].depth < graf[r2].depth)
{
graf[r1].parent = r2;
}
}
else if(c == 2)
{
if(getRoot(x) == getRoot(y))
g<<"DA\n";
else
g<<"NU\n";
}
}
}
int main()
{
read();
return 0;
}