QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#392829 | #3788. Funny Car Racing | 秦始皇派蒙恬还原神舟十二 (Jiancong Wen, Chu Jin, Zekai Zhang) | 0 | 0ms | 0kb | C++17 | 1.3kb | 2024-04-17 21:04:13 | 2024-04-17 21:04:14 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define pii pair<int,int>
#define ll long long
const int N = 1e3 + 20;
ll dis[N];
struct node
{
int v;
ll a,b,t;
} ;
vector<node> g[N];
int n,m,ss,tt;
void solve()
{
for(int i = 0; i <= n; i++) dis[i] = 1e18,g[i].clear();
while(m--)
{
int u,v;
ll a,b,t;
cin >> u >> v >> a >> b >> t;
if(a < t) continue;
g[u].push_back({v,a,b,t});
}
dis[ss] = 0;
queue<int> q;
q.push(ss);
ll ans = 1e18;
while(q.size())
{
int u = q.front();
q.pop();
for(int i = 0; i < (int)g[u].size(); i++)
{
node j = g[u][i];
ll term = j.a + j.b;
if(dis[u] % term + j.t <= j.a)
{
dis[j.v] = min(dis[u] + j.t,dis[j.v]);
}
else
{
dis[j.v] = min(dis[u] + (term - dis[u] % term) + j.t,dis[j.v]);
}
q.push(j.v);
if(j.v == tt) ans = min(ans,dis[tt]);
}
}
cout << ans << "\n";
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T = 1;
// cin >> T;
while(cin >> n >> m >> ss >> tt)
{
cout << "Case " << T++ << ": " ;
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded
input:
155 9507 117 14 19 18 2 123 1 100 97 4 155 3 121 120 1 140 1 5 8 1 121 1 69 66 2 107 2 151 150 2 190 1 68 69 1 101 1 61 60 2 126 1 124 127 2 160 3 59 55 5 133 4 66 67 1 189 1 94 96 2 108 2 65 63 2 181 2 44 48 1 130 1 28 29 1 180 1 5 6 1 107 1 29 28 1 120 1 142 140 4 152 2 46 45 2 113 1 85 88 6 163 3...