QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#39011 | #1274. Walking Plan | wyhao | AC ✓ | 485ms | 4632kb | C++ | 1.4kb | 2022-07-08 11:27:03 | 2022-07-08 11:27:06 |
Judging History
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