QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#243997 | #1274. Walking Plan | PhantomThreshold# | AC ✓ | 352ms | 7748kb | C++20 | 1.7kb | 2023-11-08 20:11:47 | 2023-11-08 20:11:48 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int B=100;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(0);
int T;
cin>>T;
while(T--)
{
int n,m;
cin>>n>>m;
vector<vector<int>> G(n+5,vector<int>(n+5,1e9));
// for(int i=1;i<=n;i++)G[i][i]=0;
for(int i=1;i<=m;i++)
{
int u,v,w;
cin>>u>>v>>w;
G[u][v]=min(G[u][v],w);
}
vector<vector<vector<int>>> disS(B+B+5,vector<vector<int>>(n+5,vector<int>(n+5,1e9))),
disB(B+5,vector<vector<int>>(n+5,vector<int>(n+5,1e9)));
for(int i=1;i<=n;i++)disS[0][i][i]=0;
for(int t=1;t<=B+B;t++)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
disS[t][i][k]=min(disS[t][i][k],disS[t-1][i][j]+G[j][k]);
}
for(int t=B+B;t>0;t--)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
disS[t-1][i][j]=min(disS[t-1][i][j],disS[t][i][j]);
}
for(int i=1;i<=n;i++)disB[0][i][i]=0;
for(int t=1;t<=B;t++)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
for(int k=1;k<=n;k++)
disB[t][i][k]=min(disB[t][i][k],disB[t-1][i][j]+disS[B][j][k]);
}
// cerr<<"pre:\n";
// for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cerr<<G[i][j]<<" \n"[j==n];
// for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cerr<<disS[1][i][j]<<" \n"[j==n];
// for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)cerr<<disS[2][i][j]<<" \n"[j==n];
int q;
cin>>q;
while(q--)
{
int u,v,x;
cin>>u>>v>>x;
int ans=1e9;
for(int i=1;i<=n;i++)
{
ans=min(ans,disS[x%B][u][i]+disB[x/B][i][v]);
// cerr<<"upd "<<i<<' '<<disS[x%B][u][i]+disB[x/B][i][v]<<endl;
}
if(ans==1e9)ans=-1;
cout<<ans<<"\n";
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
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: 265ms
memory: 7748kb
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: 352ms
memory: 7680kb
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