CSES - KILO 2017 4/5 - Results
Submission details
Task:Flowery Trails
Sender:Semikolonisti
Submission time:2017-09-26 17:15:56 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.04 sdetails
#3ACCEPTED0.23 sdetails
#4ACCEPTED0.28 sdetails
#5ACCEPTED0.21 sdetails
#6ACCEPTED0.32 sdetails
#7ACCEPTED0.38 sdetails
#8ACCEPTED0.28 sdetails
#9ACCEPTED0.31 sdetails
#10ACCEPTED0.33 sdetails

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:46:32: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 0; i < s.size(); i++) {
                                ^

Code

#include <bits/stdc++.h>
#define ll long long
#define pii pair<int, int>
#define N 11111

using namespace std;

vector<pii> v[N];
int e[N];
int d[N];

int main () {
    int n, m;
    cin>>n>>m;
    for (int i = 0; i < m; i++) {
        int a, b, c;
        cin>>a>>b>>c;
        v[a].push_back({b, c});
        v[b].push_back({a, c});
    }
    for (int i = 1; i <= n; i++) {
        d[i] = 1000000000;
    }
    priority_queue<pii> q;
    q.push({0, 1});
    d[1] = 0;
    while (!q.empty()) {
        int i = q.top().second;
        int a = -q.top().first;
        q.pop();
        if (e[i]) continue;
        e[i] = 1;
        for (pii p : v[i]) {
            int j = p.first;
            int b = p.second;
            if (!e[j] && d[j] > a + b) {
                d[j] = a + b;
                q.push({-d[j], j});
            }
        }
    }
    int ans = 0;
    vector<int> s;
    s.push_back(n);
    e[n] = 2;
    for (int i = 0; i < s.size(); i++) {
        for (pii p : v[s[i]]) {
            if (d[p.first] + p.second == d[s[i]]) {
                ans += 2 * p.second;
                if (e[p.first] < 2) {
                    e[p.first] = 2;
                    s.push_back(p.first);
                }
            }
        }
    }
    cout<<ans<<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: ACCEPTED

input
500 249500
1 2 1
1 2 1
1 3 1000
1 3 1000
...

correct output
1996

user output
1996

Test 4

Verdict: ACCEPTED

input
500 249500
1 2 1
1 2 10
1 3 999
1 3 1000
...

correct output
998

user output
998

Test 5

Verdict: ACCEPTED

input
4096 245680
1 2 1
1 3 1
2 4 1
2 5 1
...

correct output
491360

user output
491360

Test 6

Verdict: ACCEPTED

input
5000 246585
1 2 1
1 3 1
2 4 1
2 5 1
...

correct output
12284

user output
12284

Test 7

Verdict: ACCEPTED

input
10000 250000
966 4849 16
6751 3592 929
5263 5263 21
3001 6112 852
...

correct output
76

user output
76

Test 8

Verdict: ACCEPTED

input
9999 250000
9488 9488 958
3806 3806 742
4895 4600 223
9024 9024 799
...

correct output
202

user output
202

Test 9

Verdict: ACCEPTED

input
9999 250000
9396 4472 7
7056 45 7
6747 7491 5
4382 5641 5
...

correct output
82

user output
82

Test 10

Verdict: ACCEPTED

input
10000 250000
5779 9141 578
6851 288 305
7139 2759 834
4526 8082 748
...

correct output
422

user output
422