QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#26167#1274. Walking PlanWu_RenAC ✓382ms8288kbC++171.2kb2022-04-06 20:10:102022-04-29 03:09:32

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2022-04-29 03:09:32]
  • 评测
  • 测评结果:AC
  • 用时:382ms
  • 内存:8288kb
  • [2022-04-06 20:10:10]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
int T,n,m;
struct mat{
	int a[60][60];
	mat(){
		for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) a[i][j]=1e9;
	}
	int* operator [](int b){
		return a[b];
	}
	mat operator *(mat b){
		mat res;
		for(int i=1;i<=n;i++) for(int k=1;k<=n;k++) for(int j=1;j<=n;j++) res[i][j]=min(res[i][j],a[i][k]+b[k][j]);
		return res;
	}
	void out(){
		for(int i=1;i<=n;i++,puts("")) for(int j=1;j<=n;j++) printf("%d ",a[i][j]);
	}
}a[110],b[210];
mat min(mat a,mat b){
	mat res;
	for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) res[i][j]=min(a[i][j],b[i][j]);
	return res;
}
void sol(){
	scanf("%d%d",&n,&m);
	mat G;
	for(int i=1,u,v,w;i<=m;i++) scanf("%d%d%d",&u,&v,&w),G[u][v]=min(G[u][v],w);
	a[1]=mat();
	for(int i=1;i<=n;i++) a[1][i][i]=0;
	b[0]=a[0]=a[1];
	for(int i=1;i<=200;i++) b[i]=b[i-1]*G;
	a[1]=b[100];
	for(int i=2;i<=100;i++) a[i]=a[i-1]*a[1];
	for(int i=199;i>=0;i--) b[i]=min(b[i],b[i+1]);
	int q;
	scanf("%d",&q);
	while(q--){
		int s,t,k,res=1e9;
		scanf("%d%d%d",&s,&t,&k);
		for(int i=1;i<=n;i++) res=min(res,a[k/100][s][i]+b[k%100][i][t]);
		printf("%d\n",res<5e8?res:-1);
	}
}
int main(){
	scanf("%d",&T);
	while(T--) sol();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 5ms
memory: 8188kb

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: 199ms
memory: 8280kb

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: 382ms
memory: 8288kb

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