Pagini recente » Cod sursa (job #902451) | Cod sursa (job #2183797) | Cod sursa (job #2902598) | Cod sursa (job #2877668) | Cod sursa (job #2421091)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ofstream out("disjoint.out");
struct padure
{
int n;
vector<int> tat;
padure(int a): n(a), tat(a+1)
{
for(int i = 1; i <= n; ++i)
tat[i] = i;
}
int find_tat(int nod)
{
if(tat[nod] == nod)
return nod;
else
{
int tata = find_tat(tat[nod]);
tat[nod] = tata;
return tata;
}
}
void find_r(int x, int y)
{
if(find_tat(x) == find_tat(y))
out << "DA\n";
else
out << "NU\n";
}
void union_nod(int x, int y)
{
tat[y] = find_tat(x);
}
void afis()
{
for(int i = 0; i < n; ++i)
cout << tat[i] << ' ';
cout << endl;
}
};
int main()
{
ifstream in("disjoint.in");
if(!in)
cout << "eroare";
int n, m, b, x, y;
in >> n >> m;
padure P(n);
for(int i = 0; i < m; ++i)
{
in >> b >> x >> y;
if(b == 1)
P.union_nod(x, y);
if(b == 2)
P.find_r(x, y);
//P.afis();
}
in.close();
out.close();
}