結果
問題 |
No.3013 ハチマキ買い星人
|
ユーザー |
![]() |
提出日時 | 2025-03-31 16:23:02 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 434 ms / 2,000 ms |
コード長 | 1,003 bytes |
コンパイル時間 | 2,527 ms |
コンパイル使用メモリ | 203,132 KB |
実行使用メモリ | 24,060 KB |
最終ジャッジ日時 | 2025-03-31 16:23:21 |
合計ジャッジ時間 | 16,556 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 45 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define int long long int N,M,P,Y; signed main(){ cin>>N>>M>>P>>Y; vector<vector<pair<int,int>>> G(N+1); for(int i = 0; i < M; i++){ int a,b,c; cin>>a>>b>>c; G[a].push_back(make_pair(b,c)); G[b].push_back(make_pair(a,c)); } vector<int> hati(N+1,-100); for(int i = 0; i < P; i++){ int d,e; cin>>d>>e; hati[d] = e; } priority_queue<pair<int,int>> Q; Q.push(make_pair(Y,1)); vector<int> visited(N+1); vector<int> zan(N+1); while(!Q.empty()){ int pos = Q.top().second; int cost = Q.top().first; Q.pop(); if(visited[pos]) continue; visited[pos] = true; zan[pos] = cost; for(pair<int,int> i:G[pos]){ int next = i.first; int katu = i.second; if(!visited[next]){ if(cost - katu < 0) continue; Q.push(make_pair(cost - katu,next)); } } } int ans = 0; for(int i = 1; i <= N; i++){ ans = max(ans,zan[i]/hati[i]); } cout << ans << endl; }