Submission #3609400
Source Code Expand
#include <bits/stdc++.h> using namespace std; #define rep(i, j, n) for(int i=j;i<n;++i) #define all(i) i.begin(),i.end() #define rall(i) i.rbegin(),i.rend() #define INF 1e9 const int mod = 1e9 + 7; typedef long long i64; typedef pair<int, int> pi; template <class T> using vt = vector<T>; template <class T> using vvt = vector<vector<T>>; i64 gcd(i64 n, i64 m) {return (m == 0? n : gcd(m, n % m));} i64 lcm(i64 n, i64 m) {return (n / gcd(n, m) * m);} int dx[] = {0, 1, 0, -1}; int dy[] = {1, 0, -1, 0}; struct edge { int to, idx; }; vvt<edge> e[101000]; vt<i64> dijkstra(int s, vt<i64> &cost) { vt<i64> dist(101000, 1e18); dist[s] = 0; priority_queue<pair<int, i64>, vt<pair<int, i64>>, greater<pair<int, i64>>> que; que.push({s, 0}); while(!que.empty()) { auto p = que.top(); que.pop(); int v = p.first; i64 d = p.second; if(dist[v] < d) continue; for(auto &nxt : e[v]) { if(dist[nxt.to] < dist[v] + cost[nxt.idx]) continue; dist[nxt.to] = dist[v] + cost[nxt.idx]; que.push({nxt.to, dist[nxt.to]}); } } return dist; } int main() { cin.tie(0); ios::sync_with_stdio(false); int n, m, s, t; cin >> n >> m >> s >> t; s--; t--; vt<i64> a(m), b(m); rep(i, 0, m) { int u, v; cin >> u >> v >> a[i] >> b[i]; u--; v--; e[u].push_back({v, i}); e[v].push_back({u, i}); } auto dist1 = dijkstra(s, a); auto dist2 = dijkstra(t, b); vt<i64> ans; i64 res = 0; for(int i = n - 1; i >= 0; --i) { res = max(res, (i64)1e15 - dist1[i] - dist2[i]); ans.push_back(res); } for(int i = n - 1; i >= 0; --i) cout << ans[i] << endl; }
Submission Info
Submission Time | |
---|---|
Task | D - Saving Snuuk |
User | playroller |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 1731 Byte |
Status | CE |
Compile Error
./Main.cpp: In function ‘vt<long long int> dijkstra(int, vt<long long int>&)’: ./Main.cpp:44:19: error: ‘class std::vector<edge, std::allocator<edge> >’ has no member named ‘to’ if(dist[nxt.to] < dist[v] + cost[nxt.idx]) continue; ^ ./Main.cpp:44:44: error: ‘class std::vector<edge, std::allocator<edge> >’ has no member named ‘idx’ if(dist[nxt.to] < dist[v] + cost[nxt.idx]) continue; ^ ./Main.cpp:46:16: error: ‘class std::vector<edge, std::allocator<edge> >’ has no member named ‘to’ dist[nxt.to] = dist[v] + cost[nxt.idx]; ^ ./Main.cpp:46:41: error: ‘class std::vector<edge, std::allocator<edge> >’ has no member named ‘idx’ dist[nxt.to] = dist[v] + cost[nxt.idx]; ^ ./Main.cpp:47:21: error: ‘class std::vector<edge, std::allocator<edge> >’ has no member named ‘to’ que.push({nxt.to, dist[nxt.to]}); ^ ./Main.cpp:47:34: error: ‘class std::...