QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#860041 | #9960. Baggage | sherman2022# | WA | 0ms | 8020kb | C++14 | 1.9kb | 2025-01-18 09:39:46 | 2025-01-18 09:39:50 |
Judging History
answer
#include <bits/stdc++.h>
#define i64 long long int
#define pii pair<int, int>
#define mp make_pair
#define fi first
#define se second
#define eb emplace_back
using namespace std;
inline int Read() {int res; return scanf("%d", &res), res; }
inline i64 Read64() {i64 res; return scanf("%lld", &res), res; }
const int INF_32 = 1e9;
const i64 INF_64 = 1e18;
const int N = 400 + 5;
int n, m;
i64 t1[N][N], t2[N][N], t3[N][N];
priority_queue< pii > q;
int vis[N];
i64 dis[N], f[N][N];
void Dij(int st) {
for(int i = 1; i <= n; ++ i) vis[i] = 0, dis[i] = INF_64;
dis[st] = 0, q.push(mp(0, st));
while(q.size()) {
int u = q.top().se; q.pop();
if(vis[u]) continue;
vis[u] = 1;
for(int v = 1; v <= n; ++ v) {
if(vis[u]) continue;
i64 w = t3[u][v];
if(t2[u][v] < INF_64 && t1[v][u] < INF_64) w = min(w, t2[u][v] + t1[v][u] + t2[u][v]);
if(w == INF_64) continue;
if(dis[u] + w < dis[v]) {
dis[v] = dis[u] + w;
q.push(mp(-dis[v], v));
}
}
}
}
int main() {
n = Read(), m = Read();
for(int i = 1; i <= n; ++ i) {
for(int j = 1; j <= n; ++ j) {
if(i != j) t1[i][j] = INF_64, t2[i][j] = INF_64, t3[i][j] = INF_64;
}
}
for(int i = 1; i <= m; ++ i) {
int u = Read(), v = Read(), w = Read(), c = Read();
if(c >= 0) t1[u][v] = min(t1[u][v], (i64)w);
if(c >= 1) t2[u][v] = min(t2[u][v], (i64)w);
if(c >= 2) t3[u][v] = min(t3[u][v], (i64)w);
}
for(int i = 1; i <= n; ++ i) {
for(int j = 1; j <= n; ++ j) {
for(int k = 1; k <= n; ++ k) {
t1[j][k] = min(t1[j][k], t1[j][i] + t1[i][k]);
t2[j][k] = min(t2[j][k], t2[j][i] + t2[i][k]);
t3[j][k] = min(t3[j][k], t3[j][i] + t3[i][k]);
}
}
}
for(int i = 1; i <= n; ++ i) {
Dij(i);
for(int j = 1; j <= n; ++ j) f[i][j] = dis[j] == INF_64 ? -1 : dis[j];
}
for(int i = 1; i <= n; ++ i) {
for(int j = 1; j <= n; ++ j) printf("%lld ", f[i][j]);
puts("");
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 8020kb
input:
5 7 1 2 500 2 2 3 100 1 3 5 20 2 5 4 5 1 4 2 1 0 3 4 40 2 5 4 77 1
output:
0 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0 -1 -1 -1 -1 -1 0
result:
wrong answer 2nd numbers differ - expected: '500', found: '-1'