Pagini recente » Cod sursa (job #2126020) | Cod sursa (job #2584190) | Cod sursa (job #139193) | Cod sursa (job #469360) | Cod sursa (job #3169459)
#include <iostream>
#include <fstream>
#include <vector>
#include <utility>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream in("apm2.in");
ofstream out("apm2.out");
vector<vector<int>>ls, apm;
int tata[10005], h[10005];
int radacina(int u) {
if (tata[u] == 0)
return u;
return tata[u] = radacina(tata[u]);
}
void reuniune(int u, int v) {
int ru, rv;
ru = radacina(u);
rv = radacina(v);
if (h[ru] < h[rv])
{
tata[ru] = rv;
}
else {
tata[rv] = ru;
if (h[ru] == h[rv])
h[rv]++;
}
}
int main() {
int n, t = 0, m,q;
in >> n >> m>>q;
while (m--) {
int a, b, c;
in >> a >> b >> c;
ls.push_back({ c,a,b });
}
sort(ls.begin(), ls.end());
for (int i = 0; i < q; i++)
{
int a, b;
in >> a >> b;
for (auto v : ls) {
if (radacina(v[1]) != radacina(v[2])) {
reuniune(v[1], v[2]);
}
if (radacina(a) == radacina(b))
{
out << v[0]-1 << "\n";
break;
}
}
memset(tata, 0, sizeof(tata) );
memset(h, 0, sizeof(h) );
}
return 0;
}