Pagini recente » Borderou de evaluare (job #228097) | Cod sursa (job #748350) | Borderou de evaluare (job #3043313) | Cod sursa (job #681703) | Cod sursa (job #2231473)
#include <iostream>
#include <fstream>
#include <map>
#include <vector>
using namespace std;
ifstream f("disjoint.in");
ofstream g("disjoint.out");
int n, m, op, x, y;
class Disjoint {
private:
int sz;
vector<int> parent;
public:
Disjoint(int szz) : sz(szz + 1) {
parent.resize(sz);
for (int i = 0; i < sz; i++) {
parent[i] = i;
}
}
void Uneste(int x, int y) {
parent[x] = y;
}
int FindSet(int x) {
if (parent[x] != x) {
parent[x] = FindSet(parent[x]);
}
return parent[x];
}
};
int main()
{
f>>n>>m;
Disjoint d(n);
for(;m;m--)
{
f>>op>>x>>y;
if(op == 1)
d.Uneste(d.FindSet(x), d.FindSet(y));
else {
if(d.FindSet(x) == d.FindSet(y))
g<<"DA"<<endl;
else g<<"NU"<<endl;
}
}
return 0;
}