結果
| 問題 |
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;
}