Cod sursa(job #1907326)
| Utilizator | Data | 6 martie 2017 18:50:50 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.66 kb |
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("disjoint.in" );
ofstream cout("disjoint.out");
int s = 0;
vector <int> a;
int f(int i)
{
if (a[i] == i) return i;
a[i] = f(a[i]);
return a[i];
}
int main()
{
int n, m, x, y, z;
cin >> n >> m;
a.resize(n + 1);
for (int i = 0; i < a.size(); i++)
a[i] = i;
for (int i = 0; i < m; i++)
{
cin >> z >> x >> y;
if (z == 1)
a[f(x)] = y;//unirea
else
{//afisarea
if (f(x) == f(y)) cout << "DA\n";
else cout << "NU\n";
}
}
return 0;
}
