Task: | Flowery Trails |
Sender: | Pietari Kaskela |
Submission time: | 2017-09-26 17:38:24 +0300 |
Language: | C++ |
Status: | READY |
Result: | ACCEPTED |
test | verdict | time | |
---|---|---|---|
#1 | ACCEPTED | 0.06 s | details |
#2 | ACCEPTED | 0.05 s | details |
#3 | ACCEPTED | 0.37 s | details |
#4 | ACCEPTED | 0.34 s | details |
#5 | ACCEPTED | 0.28 s | details |
#6 | ACCEPTED | 0.37 s | details |
#7 | ACCEPTED | 0.68 s | details |
#8 | ACCEPTED | 0.87 s | details |
#9 | ACCEPTED | 0.48 s | details |
#10 | ACCEPTED | 0.98 s | details |
Compiler report
input/code.cpp: In function 'int main()': input/code.cpp:25:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare] for(int i = 0; i < v[cur].size(); ++i){ ^
Code
#include <bits/stdc++.h> using namespace std; vector<pair<int, int64_t>> v[101010]; vector<pair<int, int64_t>> sh[101010]; 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}); } set<pair<int64_t, int>> pq; pq.insert({0, 1}); bool d[101010] = {0}; vector<int64_t> dis(n+1, 2000000000L); while(!pq.empty()){ int cur = (*pq.begin()).second; int64_t dist = (*pq.begin()).first; pq.erase(pq.begin()); if(d[cur]) continue; d[cur] = 1; dis[cur] = dist; for(int i = 0; i < v[cur].size(); ++i){ auto f = v[cur][i]; if(dist+f.second < dis[f.first]){ dis[f.first] = dist+f.second; sh[f.first].clear(); sh[f.first].push_back({cur, i}); } else if(dist+f.second == dis[f.first]){ sh[f.first].push_back({cur, i}); } pq.insert({dist+f.second, f.first}); } } queue<int> q; q.push(n); int64_t ans = 0; bool d2[101010] = {0}; while(!q.empty()){ int cur = q.front(); q.pop(); if(d2[cur]) continue; d2[cur] = 1; for(auto f: sh[cur]){ q.push(f.first); ans+=v[f.first][f.second].second*2; } } cout << ans << "\n"; return 0; }
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 |