結果
問題 | No.3013 ハチマキ買い星人 |
ユーザー |
|
提出日時 | 2025-01-25 13:40:32 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 452 ms / 2,000 ms |
コード長 | 1,418 bytes |
コンパイル時間 | 4,336 ms |
コンパイル使用メモリ | 285,944 KB |
実行使用メモリ | 21,960 KB |
最終ジャッジ日時 | 2025-01-25 22:55:35 |
合計ジャッジ時間 | 15,020 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 45 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int n = 0,m = 0,p = 0; long long y = 0; cin >> n >> m >> p >> y; auto cmp = [](pair<int,long long> a,pair<int,long long> b) { return a.second < b.second; }; priority_queue<pair<int,long long>,vector<pair<int,long long>>,decltype(cmp)> q(cmp); q.push(pair<int,long long>{0,y}); vector<vector<pair<int,long long>>> graph(n,vector<pair<int,long long>>{}); for (int i = 0;i < m;i++) { int a = 0,b = 0; long long c = 0; cin >> a >> b >> c; a--; b--; graph[a].push_back(pair<int,long long>{b,c}); graph[b].push_back(pair<int,long long>{a,c}); } vector<long long> price(n,LLONG_MAX); for (int i = 0;i < p;i++) { int d = 0; long long e = 0; cin >> d >> e; d--; price[d] = e; } vector<bool> c(n,true); long long ans = 0; while (q.size() != 0) { pair<int,long long> temp = q.top(); q.pop(); if (c[temp.first]) { //cout << temp.first << " " << temp.second << endl; c[temp.first] = false; ans = max(ans,temp.second / price[temp.first]); for (pair<int,long long> i : graph[temp.first]) { q.push(pair<int,long long>{i.first,max((long long)0,temp.second - i.second)}); } } } cout << ans << endl; }