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::...