Submission #1349831

#TimeUsernameProblemLanguageResultExecution timeMemory
1349831blameazuTrain (APIO24_train)C++20
0 / 100
30 ms14444 KiB
#include "train.h"

#include <bits/stdc++.h>
using namespace std;

long long solve(int n, int m, int W, vector<int> T, vector<int> X, vector<int> Y,
                vector<int> A, vector<int> B, vector<int> C, vector<int> L,
                vector<int> R) {
    #define int long long
    vector<vector<array<int, 4> > > f(n+1);
    for(int i = 0; i < m; i++) {
        f[X[i]].push_back({Y[i], A[i], B[i], C[i]});
        f[Y[i]].push_back({X[i], A[i], B[i], C[i]});
    }
    vector<pair<int, int> > dis(n+1, {-1, -1});
    dis[1] = {0, 0};
    priority_queue<pair<pair<int, int>, int> > pqq;
    pqq.push({dis[1], 1});
    while(pqq.size()) {
        auto [w, id] = pqq.top(); pqq.pop();
        w.first = -w.first;
        w.second = -w.second;
        if(dis[id] != w) continue;
        for(auto &[d, st, en, cost] : f[id]) if(st >= w.second) {
            if(dis[d] == make_pair(-1LL, -1LL) || dis[d] > make_pair(w.first + cost, en)) {
                dis[d] = make_pair(w.first + cost, en);
                pqq.push({make_pair(-dis[d].first, -dis[d].second), d});
            }
        }
    }
	return dis[n].first;
    #undef int
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...