| Task: | Flowery Trails |
| Sender: | AVL-tiimi |
| Submission time: | 2017-09-26 18:05:52 +0300 |
| Language: | C++ |
| Status: | READY |
| Result: | RUNTIME ERROR |
| test | verdict | time | |
|---|---|---|---|
| #1 | ACCEPTED | 0.04 s | details |
| #2 | ACCEPTED | 0.05 s | details |
| #3 | RUNTIME ERROR | 0.22 s | details |
| #4 | RUNTIME ERROR | 0.24 s | details |
| #5 | RUNTIME ERROR | 0.27 s | details |
| #6 | RUNTIME ERROR | 0.21 s | details |
| #7 | RUNTIME ERROR | 0.25 s | details |
| #8 | RUNTIME ERROR | 0.24 s | details |
| #9 | RUNTIME ERROR | 0.20 s | details |
| #10 | RUNTIME ERROR | 0.27 s | details |
Compiler report
input/code.cpp: In function 'int main()':
input/code.cpp:33:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int j = 0; j < v[i].size(); ++j) {
^Code
#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
using namespace std;
#define F first
#define S second
int d[10000], d2[10000], L[10000];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, m;
cin >> n >> m;
vector<pair<int, int>> v[n];
vector<int> uid[n];
set<int> g[n];
for (int i = 0; i < m; ++i) {
int a, b, l;
cin >> a >> b >> l;
v[--a].push_back({--b, l});
v[b].push_back({a, l});
uid[a].push_back(i);
uid[b].push_back(i);
L[i] = l;
}
for (int i = 0; i < n; ++i) d[i] = 1e9, d2[i] = 1e9;
priority_queue<pair<int, int>> q;
q.push({0, 0});
d[0] = 0;
while (!q.empty()) {
int i = q.top().S;
q.pop();
for (int j = 0; j < v[i].size(); ++j) {
pair<int, int> p = v[i][j];
if (d[i]+p.S < d[p.F]) {
d[p.F] = d[i]+p.S;
q.push({-d[p.F], p.F});
g[p.F].clear();
g[p.F].insert(uid[i][j]);
} else if (d[i]+p.S == d[p.F]) g[p.F].insert(uid[i][j]);
}
}
long sum = 0;
set<int> chosen;
q = priority_queue<pair<int, int>>();
q.push({0, n-1});
d2[n-1] = 0;
while (!q.empty()) {
int i = q.top().S;
q.pop();
if (d[i]+d2[i] == d[n-1]) {
for (int ge : g[i]) {
chosen.insert(ge);
}
}
for (pair<int, int> p : v[i]) {
if (d2[i]+p.S < d2[p.F]) {
d2[p.F] = d2[i]+p.S;
q.push({-d2[p.F], p.F});
}
}
}
for (int i : chosen) {
sum += L[i];
}
cout << sum*2 << endl;
}
Test details
Test 1
Verdict: ACCEPTED
| input |
|---|
| 10 15 1 2 580 2 5 90 2 5 90 5 10 250 ... |
| correct output |
|---|
| 3860 |
| user output |
|---|
| 3860 |
Test 2
Verdict: ACCEPTED
| input |
|---|
| 4 7 1 2 1 1 3 2 1 4 10 1 4 3 ... |
| correct output |
|---|
| 18 |
| user output |
|---|
| 18 |
Test 3
Verdict: RUNTIME ERROR
| input |
|---|
| 500 249500 1 2 1 1 2 1 1 3 1000 1 3 1000 ... |
| correct output |
|---|
| 1996 |
| user output |
|---|
| (empty) |
Test 4
Verdict: RUNTIME ERROR
| input |
|---|
| 500 249500 1 2 1 1 2 10 1 3 999 1 3 1000 ... |
| correct output |
|---|
| 998 |
| user output |
|---|
| (empty) |
Test 5
Verdict: RUNTIME ERROR
| input |
|---|
| 4096 245680 1 2 1 1 3 1 2 4 1 2 5 1 ... |
| correct output |
|---|
| 491360 |
| user output |
|---|
| (empty) |
Test 6
Verdict: RUNTIME ERROR
| input |
|---|
| 5000 246585 1 2 1 1 3 1 2 4 1 2 5 1 ... |
| correct output |
|---|
| 12284 |
| user output |
|---|
| (empty) |
Test 7
Verdict: RUNTIME ERROR
| input |
|---|
| 10000 250000 966 4849 16 6751 3592 929 5263 5263 21 3001 6112 852 ... |
| correct output |
|---|
| 76 |
| user output |
|---|
| (empty) |
Test 8
Verdict: RUNTIME ERROR
| input |
|---|
| 9999 250000 9488 9488 958 3806 3806 742 4895 4600 223 9024 9024 799 ... |
| correct output |
|---|
| 202 |
| user output |
|---|
| (empty) |
Test 9
Verdict: RUNTIME ERROR
| input |
|---|
| 9999 250000 9396 4472 7 7056 45 7 6747 7491 5 4382 5641 5 ... |
| correct output |
|---|
| 82 |
| user output |
|---|
| (empty) |
Test 10
Verdict: RUNTIME ERROR
| input |
|---|
| 10000 250000 5779 9141 578 6851 288 305 7139 2759 834 4526 8082 748 ... |
| correct output |
|---|
| 422 |
| user output |
|---|
| (empty) |
