結果

問題 No.3013 ハチマキ買い星人
ユーザー しょうゆ団子
提出日時 2025-01-25 17:43:27
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 449 ms / 2,000 ms
コード長 1,131 bytes
コンパイル時間 3,539 ms
コンパイル使用メモリ 287,280 KB
実行使用メモリ 17,492 KB
最終ジャッジ日時 2025-01-25 23:59:56
合計ジャッジ時間 15,689 ms
ジャッジサーバーID
(参考情報)
judge6 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 45
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

const long long INF = 1LL << 60;

int main() {
    int N, M, P;
    long long Y;
    cin >> N >> M >> P >> Y;
    vector<vector<pair<int, int>>> G(N);
    for (int i = 0; i < M; i++) {
        int A, B, C;
        cin >> A >> B >> C;
        A--, B--;
        G[A].emplace_back(C, B);
        G[B].emplace_back(C, A);
    }
    vector<long long> dis(N, INF);
    using T = pair<long long, int>;
    priority_queue<T, vector<T>, greater<T>> q;
    dis[0] = 0;
    q.emplace(0, 0);
    while (!q.empty()) {
        long long d = q.top().first;
        int v = q.top().second;
        q.pop();
        if (dis[v] < d) continue;
        for (int i = 0; i < G[v].size(); i++) {
            long long nd = d + G[v][i].first;
            int nv = G[v][i].second;
            if (nd < dis[nv]) {
                dis[nv] = nd;
                q.emplace(nd, nv);
            }
        }
    }
    long long ans = 0;
    for (int i = 0; i < P; i++) {
        int D, E;
        cin >> D >> E;
        D--;
        ans = max(ans, (Y - dis[D]) / E);
    }
    cout << ans << endl;
    return 0;
}
0