CSES - KILO 2017 4/5 - Results
Submission details
Task:Flowery Trails
Sender:Pietari Kaskela
Submission time:2017-09-26 17:38:24 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.06 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.37 sdetails
#4ACCEPTED0.34 sdetails
#5ACCEPTED0.28 sdetails
#6ACCEPTED0.37 sdetails
#7ACCEPTED0.68 sdetails
#8ACCEPTED0.87 sdetails
#9ACCEPTED0.48 sdetails
#10ACCEPTED0.98 sdetails

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