QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#412236#3788. Funny Car Racingaccept_0 0ms0kbC++171.5kb2024-05-16 10:51:502024-05-16 10:51:50

Judging History

你现在查看的是最新测评结果

  • [2024-05-16 10:51:50]
  • 评测
  • 测评结果:0
  • 用时:0ms
  • 内存:0kb
  • [2024-05-16 10:51:50]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=5e4+10;
int n,m,s,t,T;
int h[305],idx,e[N],ne[N],a[N],b[N],w[N];
int 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;
	while(q.size())q.pop();
	d[s]=0;
	q.push({s,0});
	while(q.size()){
		PII o=q.top();q.pop();
		int x=o.pos,y=o.dis;
		if(st[x])continue;
		st[x]=1;
		for(int i=h[x];i;i=ne[i]){
			int v=e[i];
			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;
					if(!st[v])q.push({v,d[v]});
				}
			}
			else{//路口开启
				if(a[i]-dd>=w[i]&&w[i]+y<d[v]){//剩余时间可以恰好通过
					d[v]=w[i]+y;
					if(!st[v])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;
					if(!st[v])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 ...

result: