Pagini recente » Cod sursa (job #1439616) | Cod sursa (job #1446326) | Cod sursa (job #2299303) | Cod sursa (job #1009358) | Cod sursa (job #3310929)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("radiatie.in");
ofstream fout("radiatie.out");
struct Muchie {
int x, y, lg;
} a[30002], b[15002];
int rasp[15002], tata[15002];
int n, m, k, i;
vector<int> gr[30002], cur[30002];
static inline int Tata(int a) {
if(tata[a] == a) return a;
return tata[a] = Tata(tata[a]);
}
static inline bool Cmp(Muchie a, Muchie b) {
return a.lg < b.lg;
}
int main() {
fin.tie(NULL);
fout.tie(NULL);
fin >> n >> m >> k;
for(i = 1; i <= m; i++) fin >> a[i].x >> a[i].y >> a[i].lg;
for(i = 1; i <= k; i++) {
fin >> b[i].x >> b[i].y;
gr[b[i].x].push_back(i);
gr[b[i].y].push_back(i);
}
for(i = 1; i <= n; i++) {
cur[i].push_back(i);
tata[i] = i;
}
sort(a + 1, a + m + 1, Cmp);
for(i = 1; i <= m; i++) {
int ta = Tata(a[i].x);
int tb = Tata(a[i].y);
if(ta != tb) {
if(cur[ta].size() > cur[tb].size()) swap(ta, tb);
for(int nod : cur[ta]) {
for(int j : gr[nod]) {
int y = b[j].x + b[j].y - nod;
if(Tata(y) == tb) rasp[j] = a[i].lg;
}
cur[tb].push_back(nod);
}
tata[ta] = tb;
cur[ta].clear();
}
}
for(i = 1; i <= k; i++) fout << rasp[i] << "\n";
return 0;
}