QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#412224 | #3788. Funny Car Racing | accept_ | 0 | 0ms | 0kb | C++17 | 1.4kb | 2024-05-16 10:41:23 | 2024-05-16 10:41:23 |
answer
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
const int N=5e4+10;
int n,m,s,t,T,h[305],idx,e[N],ne[N],a[N],b[N],w[N],st[305],d[305];
void add(int u,int v,int aa,int bb,int ww){
e[++idx]=v;
a[idx]=aa;
b[idx]=bb;
w[idx]=ww;
ne[idx]=h[u];
h[u]=idx;
}
struct PII{
int pos,dis;
friend bool operator< (PII x,PII y){
return x.dis > y.dis;
}
};
void dijkstra(){
for(int i=0;i<=n;i++){
d[i]=1e9+100,st[i]=0;
}
priority_queue<PII>q;
q.push({s,0});
while(q.size()){
PII o=q.top();q.pop();
int x=o.pos,y=o.dis;
if(st[x])continue;
for(int i=h[x];i;i=ne[i]){
int v=e[i];
if(st[v])continue;
int dd=y%(a[i]+b[i]);
if(dd>=a[i]){//路口关闭
if(b[i]-(dd-a[i])+w[i]+y<d[v]){
d[v]=b[i]-(dd-a[i])+w[i]+y;
q.push({v,d[v]});
}
}
else{//路口开启
if(a[i]-dd>=w[i]&&w[i]+y<d[v]){//剩余时间可以恰好通过
d[v]=w[i]+y;
q.push({v,d[v]});
}
else if(a[i]-dd<w[i]&&a[i]+b[i]-dd+w[i]+y<d[v]){
d[v]=a[i]+b[i]-dd+w[i]+y;
q.push({v,d[v]});
}
}
}
}
}
int main(){
while(~scanf("%d%d%d%d",&n,&m,&s,&t)!=EOF){
for(int i=0;i<=n;i++)h[i]=0;
idx=0;
for(int i=0;i<=m;i++)e[i]=ne[i]=a[i]=b[i]=w[i]=0;
int u,v,aa,bb,ww;
for(int i=1;i<=m;i++){
cin>>u>>v>>aa>>bb>>ww;
if(ww>aa)continue;
add(u,v,aa,bb,ww);
}
dijkstra();
printf("Case %d: %d\n",++T,d[t]);
}
}
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...
output:
Case 1: 249 Case 2: 1540 Case 3: 1741 Case 4: 191 Case 5: 651 Case 6: 767 Case 7: 204 Case 8: 1016 Case 9: 582 Case 10: 248 Case 11: 323 Case 12: 322 Case 13: 1574 Case 14: 873 Case 15: 199 Case 16: 237 Case 17: 429 Case 18: 613 Case 19: 685 Case 20: 316 Case 21: 291 Case 22: 799 Case 23: 1009 Case ...