Pagini recente » Rating Mihailescu Alexandru (Alexandru2006) | Cod sursa (job #3041954) | Cod sursa (job #223398) | Cod sursa (job #2143698) | Cod sursa (job #273969)
Cod sursa(job #273969)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <cassert>
#include <iostream>
#include <iomanip>
#include <queue>
#include <vector>
#include <deque>
#include <algorithm>
#include <set>
#include <bitset>
#include <stack>
using namespace std;
#define pb push_back
#define mp make_pair
#define all(v) v.begin(), v.end()
#define ff first
#define ss second
#define pii pair<int,int>
#define maxN 16384
#define maxM 32768
#define oo 1100000000
struct g {
int A, B, Cost;
} Graf[maxM];
int Comp[maxN], Level[maxN], Cost[maxN], N, M, K, NrFii[maxN];
inline bool cmp ( g a, g b ) {
return a.Cost < b.Cost;
}
int grupa ( int nod ) {
for ( ; Comp[nod] != nod; nod = Comp[nod] ) ;
return nod;
}
void Apm () {
int i, a, b, nr = 0;
for (i = 1; i <= N; ++ i) Comp[i] = i;
for (i = 0; i < M && nr < N - 1; ++ i) {
if ( (a = grupa(Graf[i].A)) != (b = grupa(Graf[i].B)) ) {
++ nr;
if ( Level[a] < Level[b] ) {
Comp[a] = b;
Cost[a] = Graf[i].Cost;
} else {
Comp[b] = a;
Cost[b] = Graf[i].Cost;
if (Level[a] == Level[b])
++ Level[b];
}
}
}
}
int search_dist (int nod) {
int ret = -13;
for ( ; Comp[nod] != nod && NrFii[nod] < 2; nod = Comp[nod])
if (Cost[nod] > ret) ret = Cost[nod];
return ret;
}
int main () {
int i, a, b, nod, x, y;
freopen("radiatie.in", "r", stdin);
freopen("radiatie.out", "w", stdout);
for (scanf("%d%d%d", &N, &M, &K), i = 0; i < M; ++ i)
scanf("%u%u%u", &Graf[i].A, &Graf[i].B, &Graf[i].Cost);
sort(Graf, Graf + M, cmp);
Apm();
for (i = 1; i <= K; ++ i) {
scanf("%u%u", &x, &y);
for (nod = x ; Comp[nod] != nod ; nod = Comp[nod] ) NrFii[nod] ++;
for (nod = y ; Comp[nod] != nod ; nod = Comp[nod] ) NrFii[nod] ++;
printf("%d\n", ( (a = search_dist(x)) > (b = search_dist(y))) ? a : b);
for (nod = x ; Comp[nod] != nod ; nod = Comp[nod] ) NrFii[nod] --;
for (nod = y ; Comp[nod] != nod ; nod = Comp[nod] ) NrFii[nod] --;
}
}
// powered by gedit snippets and suse :)