Cod sursa(job #7347)

Utilizator vlad_DVlad Dumitriu vlad_D Data 21 ianuarie 2007 13:30:04
Problema Radiatie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <stdio.h>
#include <vector>

using namespace std;

int n, m, k, i, j;
struct nod{int a, b, c; };
int mini[16000];
vector <vector<nod> > A;
int main() {
	freopen("radiatie.in", "r", stdin);
	freopen("radiatie.out", "w", stdout);
	scanf("%d %d %d", &n, &m, &k);
	A.resize(n+3);
	for (i=1; i<=m; i++) {
		int a, b, c;
		scanf("%d %d %d", &a, &b, &c);
		nod Q; Q.a=a; Q.b = b; Q.c = c;
		A[a].push_back(Q);
		A[b].push_back(Q);
		}
	for (i=1; i<=k; i++) {
		for (j=1; j<=n; j++) mini[j] = 2000000*1000;
		int a, b;
		scanf("%d %d", &a, &b);
		mini[a] = 0;
		while (1) {
			int ok = 0;
			for (j=1; j<=n; j++) if (mini[j] != 2000000*1000) {
				for (int p = 0; p<A[j].size(); p++) {
					int alt = mini[j];
					if (A[j][p].c > alt) alt = A[j][p].c;
					if (alt < mini[A[j][p].b]) {ok=1; mini[A[j][p].b]=alt;}
					}
				}
			}
		printf("%d\n", mini[b]);
		}
	return 0;
}