Pagini recente » Cod sursa (job #663929) | Cod sursa (job #1895514) | Cod sursa (job #3005326) | Cod sursa (job #812518) | Cod sursa (job #934311)
Cod sursa(job #934311)
#include <fstream>
using namespace std;
struct node {
int data;
node *parent;
node(int x) {
data = x;
parent = NULL;
}
};
int rep(node** nodes, int x)
{
while (nodes[x]->parent != NULL)
x = nodes[x]->parent->data;
return x;
}
void unite(node** nodes, int x, int y)
{
nodes[rep(nodes, x)]->parent = nodes[rep(nodes, y)];
}
int main()
{
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int n, m;
in>>n>>m;
node *nodes[n];
for (int i = 0; i < n; i++)
nodes[i] = new node(i);
int op, x, y;
while (m-->0) {
in>>op>>x>>y;
x--; y--;
switch (op) {
case 1:
unite(nodes, x, y);
break;
case 2:
if (rep(nodes, x) == rep(nodes, y))
out<<"DA"<<endl;
else
out<<"NU"<<endl;
break;
}
}
return 0;
}