Nu exista pagina, dar poti sa o creezi ...
Cod sursa(job #2675164)
| Utilizator | Data | 21 noiembrie 2020 10:47:11 | |
|---|---|---|---|
| Problema | Paduri de multimi disjuncte | Scor | 30 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.85 kb |
#include <iostream>
#include <fstream>
using namespace std;
int tata[505], n, m;
ifstream fin ("disjoint.in");
ofstream fout ("disjoint.out");
int Cautare(int x)
{
int rad = x, y;
while(tata[rad])
{
rad = tata[rad];
}
while (x != rad)
{
y = tata[x];
tata[x] = rad;
x = y;
}
return rad;
}
void Unificare(int x, int y)
{
tata[x] = y;
}
void Read()
{
fin >> n >> m;
int x, y, op;
for(int i = 1; i <= m; i++)
{
fin >> op >> x >> y;
x = Cautare (x);
y = Cautare (y);
if(op == 1)
Unificare(x, y);
else
{
if(x == y)
fout << "DA\n";
else
fout << "NU\n";
}
}
}
int main()
{
Read();
return 0;
}
