結果
| 問題 |
No.1 道のショートカット
|
| ユーザー |
|
| 提出日時 | 2014-12-01 18:15:05 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
MLE
(最新)
AC
(最初)
|
| 実行時間 | - |
| コード長 | 1,324 bytes |
| コンパイル時間 | 876 ms |
| コンパイル使用メモリ | 75,752 KB |
| 実行使用メモリ | 817,576 KB |
| 最終ジャッジ日時 | 2024-07-08 03:36:04 |
| 合計ジャッジ時間 | 3,987 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 7 MLE * 1 -- * 32 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define N 51
#define C 301
#define V 1501
#define INF (1 << 30)
struct Edge
{
int t, y, m;
Edge(int t, int y, int m)
: t(t)
, y(y)
, m(m)
{
}
};
struct Y_M
{
int y, m;
Y_M(int y, int m)
: y(y)
, m(m)
{
}
};
int main()
{
int n, c, v;
cin >> n >> c >> v;
int s[V], t[V], y[V], m[V];
for (int i = 0; i < v; ++i)
{
cin >> s[i];
}
for (int i = 0; i < v; ++i)
{
cin >> t[i];
}
for (int i = 0; i < v; ++i)
{
cin >> y[i];
}
for (int i = 0; i < v; ++i)
{
cin >> m[i];
}
vector<vector<Edge>> graph;
graph.assign(n + 1, vector<Edge>());
for (int i = 0; i < v; ++i)
{
graph[s[i]].emplace_back(t[i], y[i], m[i]);
}
vector<vector<Y_M>> yms;
yms.assign(n + 1, vector<Y_M>());
yms[1].emplace_back(0, 0);
for (int i = 1; i <= n; ++i)
{
for (auto &e : graph[i])
{
for (auto &ym : yms[i])
{
if (ym.y + e.y > c) continue;
yms[e.t].emplace_back(ym.y + e.y, ym.m + e.m);
}
}
}
if (yms[n].empty())
{
cout << "-1" << endl;
}
else
{
cout << min_element(yms[n].begin(), yms[n].end(), [](const Y_M &i, const Y_M &j){ return i.m < j.m; })->m << endl;
}
return 0;
}