QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#39011#1274. Walking PlanwyhaoAC ✓485ms4632kbC++1.4kb2022-07-08 11:27:032022-07-08 11:27:06

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-07-08 11:27:06]
  • 评测
  • 测评结果:AC
  • 用时:485ms
  • 内存:4632kb
  • [2022-07-08 11:27:03]
  • 提交

answer

#include<cstdio>
#include<cstring>
using namespace std;
const int N=55,INF=0x3f3f3f3f;
int T,n,m,q,s,t,K;
int a[N][N];
int min1(int x,int y){
	return x<y?x:y;
}
int f[N][N][155];
int G[N][N][105];
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d%d",&n,&m);
		memset(a,0x3f,sizeof a);
		for(int i=1,x,y,w;i<=m;i++){
			scanf("%d%d%d",&x,&y,&w);
			a[x][y]=min1(a[x][y],w);
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++) f[i][j][1]=a[i][j],G[i][j][0]=f[i][j][0]=INF;
			f[i][i][0]=G[i][i][0]=0;
		}
		for(int ii=2;ii<=150;ii++){
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					int mi=INF;
					for(int k=1;k<=n;k++){
						mi=min1(mi,f[i][k][ii-1]+a[k][j]);
					}
					f[i][j][ii]=mi;
				}
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++) G[i][j][1]=f[i][j][100];
		}
		for(int ii=2;ii<=100;ii++){
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					int mi=INF;
					for(int k=1;k<=n;k++){
						mi=min1(mi,G[i][k][ii-1]+G[k][j][1]);
					}
					G[i][j][ii]=mi;
				}
			}
		}
		for(int ii=149;~ii;ii--){
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					f[i][j][ii]=min1(f[i][j][ii],f[i][j][ii+1]);
				}
			}
		}
		scanf("%d",&q);
		while(q--){
			scanf("%d%d%d",&s,&t,&K);
			int a=K/100,b=K%100;
			int mi=INF;
			for(int i=1;i<=n;i++){
				mi=min1(mi,G[s][i][a]+f[i][t][b]);
			}
			if(mi==INF) puts("-1");
			else printf("%d\n",mi);
		}
	}
	return 0;
}

详细

Test #1:

score: 100
Accepted
time: 2ms
memory: 3720kb

input:

2
3 3
1 2 1
2 3 10
3 1 100
3
1 1 1
1 2 1
1 3 1
2 1
1 2 1
1
2 1 1

output:

111
1
11
-1

result:

ok 4 lines

Test #2:

score: 0
Accepted
time: 316ms
memory: 4456kb

input:

10
5 10
4 2 55
2 1 26
3 4 83
5 2 16
4 5 54
3 4 38
2 1 68
2 5 1
4 5 85
4 2 60
20
2 1 13
1 4 17
3 2 20
2 4 16
4 2 17
4 2 2
3 1 2
1 5 10
2 1 8
4 5 15
4 2 16
3 1 18
5 2 7
4 2 9
4 3 16
1 4 18
3 2 5
1 5 9
5 1 19
1 2 16
20 50
4 16 25
3 16 990
9 18 863
19 12 236
4 10 360
13 4 585
14 17 164
8 18 198
2 17 804...

output:

128
-1
246
-1
191
70
119
-1
94
173
189
253
67
123
-1
-1
125
-1
195
-1
-1
23449
3476
18735
17412
23124
29499
26452
9757
21128
9524
-1
4486
8797
8041
33717
32669
5108
32534
13020
22800
4411
3529
37460
4191
15863
5342
22005
-1
14496
16535
13644
-1
33956
28717
24721
13816
26289
8840
28137
9991
14430
-1
...

result:

ok 406120 lines

Test #3:

score: 0
Accepted
time: 485ms
memory: 4632kb

input:

10
5 10
4 1 62
3 5 93
4 5 99
2 5 63
2 4 26
5 3 31
2 5 14
5 3 54
1 2 47
1 5 18
200
2 5 8
3 1 17
1 5 11
2 1 17
4 2 1
4 2 13
5 1 13
5 2 2
1 4 8
2 3 4
1 1 1
1 5 7
3 5 3
5 3 12
1 4 18
3 1 11
5 4 2
1 3 4
5 5 13
2 3 12
1 4 19
3 5 17
3 5 20
3 3 1
5 5 9
1 5 7
2 4 9
4 5 16
1 3 19
4 1 18
2 1 16
3 5 17
4 5 7
3 ...

output:

365
-1
466
763
109
649
-1
-1
343
137
135
288
217
775
883
-1
-1
173
868
531
883
1085
1333
124
620
288
431
744
848
872
763
1085
339
-1
343
-1
341
-1
161
784
-1
109
244
49
-1
424
871
-1
-1
872
587
393
270
763
61
701
620
-1
-1
270
558
-1
559
341
-1
540
135
-1
857
-1
-1
810
31
713
467
-1
-1
-1
277
784
69...

result:

ok 900200 lines