結果

問題 No.1 道のショートカット
ユーザー anago-pie
提出日時 2023-08-24 12:52:23
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
TLE  
実行時間 -
コード長 1,198 bytes
コンパイル時間 1,990 ms
コンパイル使用メモリ 179,676 KB
実行使用メモリ 817,492 KB
最終ジャッジ日時 2024-12-22 20:12:00
合計ジャッジ時間 34,489 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 34 TLE * 3 MLE * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
#include <iterator>
using namespace std;
#define rep(i, n) for(int i=0; i<n; i++)
#define debug 1
using ll = long long;
using ld = long double;
const int mod = 998244353;
const double pi = atan2(0, -1);
#include <time.h>
#include <chrono>

int main() {
	int N, C, V;
	cin >> N >> C >> V;
	vector<vector<vector<int>>> path(N);
	vector<vector<int>> memo(V, vector<int>(4));
	rep(i, 4) {
		rep(j, V) {
			cin >> memo[j][i];
		}
	}
	rep(i, V) {
		int s = memo[i][0] - 1;
		int t = memo[i][1] - 1;
		int y = memo[i][2];
		int m = memo[i][3];
		path[s].push_back({ t,y,m });
	}
	

	priority_queue < vector<int>, vector<vector<int>>, greater<vector<int>>> pq;
	vector<int> ans = { (mod,mod) };
	queue<vector<int>> q;
	q.push({ 0, 0, 0 });
	while (!q.empty()) {
		int now = q.front()[0];
		int time = q.front()[1];
		int cost = q.front()[2];
		q.pop();
		for (vector<int> v : path[now]) {
			int x = v[0];
			int nt = time + v[2];
			int nc = cost + v[1];
			if (nc > C) {
				continue;
			}
			if (x == N - 1&&nt<ans[0]) {
				ans = { nt,nc };
			}
			else {
				q.push({ x,nt,nc });
			}
		}
	}

	if (ans[0]==mod) {
		cout << -1 << endl;
	}
	else {
		cout << ans[0] << endl;
	}
}
0