Pagini recente » Cod sursa (job #305828) | Cod sursa (job #977607) | Cod sursa (job #489390) | Cod sursa (job #1222247) | Cod sursa (job #542175)
Cod sursa(job #542175)
// http://infoarena.ro/problema/disjoint
#include <fstream>
using namespace std;
#define maxSize 100002
ifstream in("disjoint.in");
ofstream out("disjoint.out");
int number,operations,type,one,two;
int father[maxSize];
void unite(int first,int second);
int find(int node);
int main() {
in >> number >> operations;
for(int i=1;i<=number;i++)
father[i] = i;
for(int i=1;i<=operations;i++) {
in >> type >> one >> two;
switch(type) {
case 1: { unite(one,two); break; }
case 2: { if(find(one) == find(two))
out << "DA\n";
else
out << "NU\n";
break;
}
}
}
return (0);
}
void unite(int first,int second) {
father[first] = second;
}
int find(int node) {
int i;
for(i=node;father[i]!=i;i=father[i]);
return i;
}