Submission #1294559

#TimeUsernameProblemLanguageResultExecution timeMemory
1294559sunflowerToll (BOI17_toll)C++17
10 / 100
39 ms4500 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define MASK(x) (1LL << (x)) #define BIT(x, i) (((x) >> (i)) & 1) #define SZ(x) ((int) (x).size()) #define ALL(a) (a).begin(), (a).end() #define FOR(i, a, b) for (int i = (a), _b = (b); i <= _b; ++i) #define FORD(i, a, b) for (int i = (a), _b = (b); i >= _b; --i) #define REP(i, n) for (int i = 0, _n = (n); i < _n; ++i) #define fi first #define se second #define left __left #define right __right #define prev __prev #define next __next template <class X, class Y> bool maximize(X &x, Y y) { if (x < y) return x = y, true; else return false; } template <class X, class Y> bool minimize(X &x, Y y) { if (x > y) return x = y, true; else return false; } const long long INF = (long long) 1e18 + 7; #define MAX_NODE 50500 #define MAX_QUERY 10100 int K, numNode, numEdge, numQuery; vector<pair<int, int>> adj[MAX_NODE + 2]; ll dist[MAX_NODE + 2]; void Dijkstra(int s) { #define ii pair<long long, int> FOR(i, 1, numNode) dist[i] = INF; priority_queue<ii, vector<ii>, greater<ii>> q; #define PUSH(s) q.push(make_pair(dist[(s)], (s))) dist[s] = 0; PUSH(s); while (!q.empty()) { ll d = q.top().fi; int u = q.top().se; q.pop(); if (d != dist[u]) continue; for (const pair<int, int> &e : adj[u]) { int v = e.fi, w = e.se; if (minimize(dist[v], dist[u] + w)) PUSH(v); } } FOR(i, 1, numNode) if (dist[i] == INF) dist[i] = -1; } int main() { ios_base::sync_with_stdio(false);cin.tie(nullptr); cin >> K >> numNode >> numEdge >> numQuery; FOR(i, 1, numEdge) { int u, v, w; cin >> u >> v >> w; adj[u].push_back(make_pair(v, w)); } Dijkstra(0); while (numQuery--) { int u, v; cin >> u >> v; assert(u == 0); cout << dist[v] << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...