QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#471876#1274. Walking Plangrass8cow#AC ✓341ms7176kbC++171.2kb2024-07-11 10:43:082024-07-11 10:43:08

Judging History

This is the latest submission verdict.

  • [2024-07-11 10:43:08]
  • Judged
  • Verdict: AC
  • Time: 341ms
  • Memory: 7176kb
  • [2024-07-11 10:43:08]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
int n,m;
struct qq{
    int a[52][52];
}L[110],R[210],I,E;
qq operator * (const qq &a,const qq &b){
    qq c;memset(c.a,0x3f,sizeof(c.a));
    for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
    c.a[i][j]=min(c.a[i][j],a.a[i][k]+b.a[k][j]);
    return c;
}
qq operator + (const qq &a,const qq &b){
    qq c;memset(c.a,0x3f,sizeof(c.a));
    for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)
    c.a[i][j]=min(a.a[i][j],b.a[i][j]);
    return c;
}
const int Q=1e9;
void sol(){
    scanf("%d%d",&n,&m);
    memset(E.a,0x3f,sizeof(E.a));
    memset(I.a,0x3f,sizeof(I.a));
    for(int i=1;i<=n;i++)I.a[i][i]=0;
    for(int i=1,u,v,w;i<=m;i++)scanf("%d%d%d",&u,&v,&w),E.a[u][v]=min(E.a[u][v],w);
    L[0]=R[0]=I;
    for(int i=1;i<=200;i++)R[i]=R[i-1]*E;
    for(int i=1;i<=100;i++)L[i]=L[i-1]*R[100];
    for(int i=200;i;i--)R[i-1]=R[i-1]+R[i];
    int q;scanf("%d",&q);while(q--){
        int u,v,k;scanf("%d%d%d",&u,&v,&k);
        int ans=Q;
        for(int i=1;i<=n;i++)
        ans=min(ans,L[k/100].a[u][i]+R[k%100].a[i][v]);
        if(ans==Q)puts("-1");
        else printf("%d\n",ans);
    }
}
int main(){
    int T;scanf("%d",&T);while(T--)sol();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 7108kb

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: 240ms
memory: 7124kb

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: 341ms
memory: 7176kb

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