QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#81781 | #1274. Walking Plan | Reanap | WA | 793ms | 8444kb | C++14 | 2.4kb | 2023-02-26 11:59:27 | 2023-02-26 11:59:28 |
Judging History
answer
#include <bits/stdc++.h>
#define pii pair <int , int>
#define pll pair <LL , LL>
#define mp make_pair
#define fs first
#define sc second
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
//const int Mxdt=100000;
//static char buf[Mxdt],*p1=buf,*p2=buf;
//#define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,Mxdt,stdin),p1==p2)?EOF:*p1++;
template <typename T>
void read(T &x) {
T f=1;x=0;char s=getchar();
while(s<'0'||s>'9') {if(s=='-') f=-1;s=getchar();}
while(s>='0'&&s<='9') {x=(x<<3)+(x<<1)+(s^'0');s=getchar();}
x *= f;
}
template <typename T>
void write(T x , char s='\n') {
if(!x) {putchar('0');putchar(s);return;}
if(x<0) {putchar('-');x=-x;}
T t = 0 , tmp[25] = {};
while(x) tmp[t ++] = x % 10 , x /= 10;
while(t -- > 0) putchar(tmp[t] + '0');
putchar(s);
}
const LL inf = 1e18;
LL dis1[105][55][55] , dis2[105][55][55] , dis[55][55];
int n , m;
int main() {
int T;read(T);
while(T -- > 0) {
for (int i = 0; i <= 100; ++i) for (int j = 0; j <= 50; ++j) for (int k = 0; k <= 50; ++k) {
dis1[i][j][k] = dis2[i][j][k] = inf;
dis[j][k] = inf;
if(j == k && !i) dis1[i][j][k] = dis2[i][j][k] = dis[j][k] = 0;
if(j == k) dis[j][k] = 0;
}
read(n),read(m);
for (int i = 1; i <= m; ++i) {
int u , v;LL w;
read(u),read(v),read(w);
dis1[1][u][v] = min(dis1[1][u][v] , w);
dis[u][v] = min(dis[u][v] , w);
}
for (int u = 1; u <= n; ++u) for (int k = 1; k <= n; ++k) for (int v = 1; v <= n; ++v) {
dis[u][v] = min(dis[u][v] , dis[u][k] + dis[k][v]);
}
for (int i = 2; i <= 100; ++i) {
for (int u = 1; u <= n; ++u) for (int k = 1; k <= n; ++k) for (int v = 1; v <= n; ++v) {
dis1[i][u][v] = min(dis1[i][u][v] , dis1[i - 1][u][k] + dis1[1][k][v]);
}
}
for (int u = 1; u <= n; ++u) for (int v = 1; v <= n; ++v) dis2[1][u][v] = dis1[100][u][v];
for (int i = 2; i <= 100; ++i) {
for (int u = 1; u <= n; ++u) for (int k = 1; k <= n; ++k) for (int v = 1; v <= n; ++v) {
dis2[i][u][v] = min(dis2[i][u][v] , dis2[i - 1][u][k] + dis2[1][k][v]);
}
}
int Q;read(Q);
while(Q -- > 0) {
int s , t , k;
read(s),read(t),read(k);
int p = k / 100 , q = k % 100;
LL ans = inf;
for (int w = 1; w <= n; ++w) for (int d = 1; d <= n; ++d) ans = min(ans , dis1[q][s][w] + dis2[p][w][d] + dis[d][t]);
if(ans != inf) write(ans);
else puts("-1");
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 8424kb
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: -100
Wrong Answer
time: 793ms
memory: 8444kb
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:
wrong answer 78th lines differ - expected: '4672', found: '5153'