This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN = 2e3 + 25;
vector <array <int, 3>> adj[MAXN];
int n, m;
long long c[MAXN], t[MAXN];
priority_queue <array <int, 3>, vector <array <int, 3>>, greater <array <int, 3>>> pq;
signed main () {
cin >> n >> m;
for (int i = 1; i <= m; i++) {
int a, b, c, d;
cin >> a >> b >> c >> d;
adj[a].push_back({b, c, d});
adj[b].push_back({a, c, d});
}
for (int i = 2; i <= n; i++) {
c[i] = t[i] = 1e16;
}
pq.push({0, 0, 1});
while (!pq.empty()) {
auto k = pq.top();
pq.pop();
c[k[2]] = min(c[k[2]], (int)k[0] * k[1]);
if (t[k[2]] < k[1]) continue;
t[k[2]] = k[1];
for (auto j : adj[k[2]]) {
if (j[1] + k[1] > 4e6) continue;
pq.push({k[0] + j[2], k[1] + j[1], j[0]});
}
}
for (int i = 2; i <= n; i++) {
if (c[i] >= 1e16) cout << -1 << '\n';
else cout << c[i] << '\n';
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |