結果
問題 | No.2739 Time is money |
ユーザー |
|
提出日時 | 2024-04-21 06:51:24 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,310 bytes |
コンパイル時間 | 2,657 ms |
コンパイル使用メモリ | 216,516 KB |
実行使用メモリ | 92,348 KB |
最終ジャッジ日時 | 2024-10-13 05:35:38 |
合計ジャッジ時間 | 22,885 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 8 WA * 10 |
ソースコード
#include <bits/stdc++.h> #define rep(i, n) for(int i = 0; i < (int)(n); i++) #define rep1(i, n) for(int i = 1; i <=(int)(n); i++) #define all(obj) (obj).begin(), (obj).end() typedef long long int ll; using namespace std; map<pair<int,int>, ll> mpc,mpt; ll ans = -1; ll x; void dfs(int goal,vector<vector<int>>& graph,vector<bool>&passed, int start, ll cost, ll time){ if( start == goal){ ll atime = cost / x; if( cost % x != 0) atime++; if( ans == -1){ ans = atime+time; }else{ ans = min(ans,atime+time); } return ; } passed[start] = true; for( auto nx: graph[start]){ if( passed[nx] == false){ dfs(goal,graph,passed,nx, cost+mpc[{start,nx}], time+mpt[{start,nx}]); } } } int main() { int n,m; cin >> n >> m >> x; vector<vector<int>> graph(n); rep(i,m){ int u,v; ll c,t; cin >> u >> v >> c >> t; v--; u--; mpt[{u,v}] = t; mpc[{u,v}] = c; mpt[{v,u}] = t; mpc[{v,u}] = c; graph[u].push_back(v); graph[v].push_back(u); } vector<bool> passed(n,false); ans = -1; dfs(n-1,graph,passed,0,0,0); cout << ans << endl; }