結果
問題 | No.3013 ハチマキ買い星人 |
ユーザー |
![]() |
提出日時 | 2025-01-25 13:05:04 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 734 ms / 2,000 ms |
コード長 | 953 bytes |
コンパイル時間 | 1,640 ms |
コンパイル使用メモリ | 176,328 KB |
実行使用メモリ | 40,448 KB |
最終ジャッジ日時 | 2025-01-25 22:32:38 |
合計ジャッジ時間 | 17,932 ms |
ジャッジサーバーID (参考情報) |
judge6 / judge11 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 45 |
ソースコード
#include <bits/stdc++.h> using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) typedef vector<int> VI; typedef vector<VI> VVI; typedef vector<long long> VL; typedef vector<VL> VVL; typedef long long LL; #define all(a) (a).begin(), (a).end() #define Yes(n) cout << ((n) ? "Yes" : "No" ) << endl #define ALL(a) (a).begin(),(a).end() #define pb push_back int main() { LL n,m,p,y; cin>>n>>m>>p>>y; VVI A[n]; rep(i,m){ int a,b,c; cin>>a>>b>>c; a--;b--; A[a].pb({b,c}); A[b].pb({a,c}); } LL dist[n]; rep(i,n){dist[i]=-1;} set<VL> D; D.insert({-y,0}); while(D.size()>0){ VL z=*D.begin(); D.erase(z); if(dist[z[1]]!=-1){continue;} int i=z[1]; dist[i]=-z[0]; for(VI zz : A[i]){ int j=zz[0]; if(dist[j]==-1){ D.insert({-max(dist[i]-zz[1],LL(0)),j}); } } } LL ans=0; rep(i,p){ int d,e;cin>>d>>e;d--; ans=max(ans,dist[d]/e); }cout<<ans<<endl; }