Pagini recente » Cod sursa (job #604094) | Cod sursa (job #1840359) | Cod sursa (job #2622419) | Cod sursa (job #1955321) | Cod sursa (job #911170)
Cod sursa(job #911170)
#include <fstream>
#include <vector>
#include <queue>
#define pii pair<int,int>
#define x first
#define y second
#define mp make_pair
using namespace std;
ifstream cin("radiatie.in");
ofstream cout("radiatie.out");
const int NMAX = 15002;
int N, M, K;
vector< pii > G[NMAX], Q[NMAX];
int bst[NMAX], r[NMAX];
void readData() {
cin>>N>>M>>K;
int a, b, c;
for(int i = 0;i < M;i++) {
cin>>a>>b>>c;
G[a].push_back(mp(b,c));
G[b].push_back(mp(a,c));
}
}
void bf(int src) {
queue<int> q;
memset(bst,-1,sizeof(bst));
bst[src] = 0;
q.push(src);
while(!q.empty()) {
int v = q.front();
q.pop();
for(vector< pii >::const_iterator w = G[v].begin();w != G[v].end();w++) {
int cost = max(bst[v],w->y);
if(bst[w->x] == -1 || cost < bst[w->x]) {
bst[w->x] = cost;
q.push(w->x);
}
}
}
}
int main()
{
readData();
int a, b;
for(int i = 0;i < K;i++) {
cin>>a>>b;
if(a > b) swap(a,b);
Q[a].push_back(mp(b,i));
}
for(int i = 1;i <= N;i++) {
if(!Q[i].empty()) {
bf(i);
for(vector< pii >::const_iterator it = Q[i].begin();it != Q[i].end();it++) {
r[it->y] = bst[it->x];
}
}
}
for(int i = 0;i < K;i++) {
cout<<r[i]<<"\n";
}
return 0;
}