Cod sursa(job #1382812)

Utilizator vladrochianVlad Rochian vladrochian Data 9 martie 2015 16:31:40
Problema PScNv Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>
#include <vector>
#include <queue>
#include <cstring>
using namespace std;

const int kMaxN = 250005;

ifstream fin("pscnv.in");
ofstream fout("pscnv.out");

int N, M, x, y;
int mx[kMaxN];
vector<pair<int, int>> G[kMaxN];
struct HeapNode {
	int node, cost;
	HeapNode(int node, int cost) : node(node), cost(cost) {}
	bool operator<(const HeapNode &other) const {
		return cost > other.cost;
	}
};
priority_queue<HeapNode> q;

int main() {
	fin >> N >> M >> x >> y;
	while (M--) {
		int x, y, k;
		fin >> x >> y >> k;
		G[x].emplace_back(y, k);
	}
	memset(mx, 0x3f, sizeof mx);
	mx[x] = 0;
	q.emplace(x, 0);
	while (!q.empty()) {
		int node = q.top().node;
		int cost = q.top().cost;
		q.pop();
		if (cost != mx[node])
			continue;
		for (const auto &it : G[node]) {
			int new_cost = max(cost, it.second);
			if (new_cost < mx[it.first]) {
				mx[it.first] = new_cost;
				q.emplace(it.first, new_cost);
			}
		}
	}
	fout << mx[y] << "\n";
	return 0;
}