| 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 |
