Submission details
Task:Flights
Sender:multiply and surrender
Submission time:2015-10-07 18:46:34 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.42 sdetails
#2ACCEPTED0.17 sdetails
#3ACCEPTED0.41 sdetails
#4ACCEPTED0.37 sdetails
#5ACCEPTED0.43 sdetails
#6ACCEPTED0.29 sdetails
#7ACCEPTED0.41 sdetails
#8ACCEPTED0.20 sdetails
#9ACCEPTED0.43 sdetails
#10ACCEPTED0.30 sdetails
#11ACCEPTED0.43 sdetails
#12ACCEPTED0.29 sdetails
#13ACCEPTED0.43 sdetails
#14ACCEPTED0.33 sdetails
#15ACCEPTED0.43 sdetails
#16ACCEPTED0.13 sdetails
#17ACCEPTED0.42 sdetails
#18ACCEPTED0.29 sdetails
#19ACCEPTED0.43 sdetails
#20ACCEPTED0.32 sdetails
#21ACCEPTED0.42 sdetails
#22ACCEPTED0.18 sdetails
#23ACCEPTED0.43 sdetails
#24ACCEPTED0.26 sdetails
#25ACCEPTED0.42 sdetails
#26ACCEPTED0.19 sdetails
#27ACCEPTED0.41 sdetails
#28ACCEPTED0.31 sdetails
#29ACCEPTED0.43 sdetails
#30ACCEPTED0.30 sdetails

Code

#include <iostream>
#include <vector>
#include <queue>

#define ll long long
#define mp make_pair
#define F first
#define S second
#define INF 999999999999999
#define ld long double

using namespace std;


pair<pair<ll,ll>,pair<int,int>> e[201010];
vector<int> v1[101010], v2[101010];
int n,m;
priority_queue<pair<ll,int>> pq;

int t[101010],t2[101010];
ll dist[101010], dist2[101010];

void dijkstra() {
	for (int i=1;i<=n;i++) dist[i]=INF;
	dist[1]=0;
	pq.push(mp(0,1));
	while (!pq.empty()) {
		ll x = -pq.top().first;
		int s = pq.top().second;
		pq.pop();
		if (t[s]) continue;
		t[s] = 1;
		for (unsigned int i = 0; i < v1[s].size(); i++) {
			int u = e[v1[s][i]].S.S;
			if (x+e[v1[s][i]].F.F < dist[u]) {
				dist[u] = x+e[v1[s][i]].F.F;
				pq.push(make_pair(-dist[u],u));
			}
		}
	}
}

void dijkstra2() {
        for (int i=1;i<=n;i++) dist2[i]=INF;
        dist2[n]=0;
        pq.push(mp(0,n));
        while (!pq.empty()) {
                ll x = -pq.top().first;
                int s = pq.top().second;
                pq.pop();
                if (t2[s]) continue;
                t2[s] = 1;
                for (unsigned int i = 0; i < v2[s].size(); i++) {
                        int u = e[v2[s][i]].S.F;
                        if (x+e[v2[s][i]].F.F < dist2[u]) {
                                dist2[u] = x+e[v2[s][i]].F.F;
                                pq.push(make_pair(-dist2[u],u));
                        }
                }
        }
}



int main() {
	cin >> n >> m;
	for (int i=0;i<m;i++) {
		int a,b;
		ll p,x;
		cin >> a >> b >> p >> x;
		v1[a].push_back(i);
		v2[b].push_back(i);
		e[i]=mp(mp(p,x),mp(a,b));
	}
	dijkstra();
	dijkstra2();
//	for (int i=1;i<=n;i++) cout << dist[i] << " " << dist2[i] << endl;
	ll parsa =4*99*INF;
	for (int i=0;i<m;i++) {
		ll res = dist[e[i].S.F];
		res += dist2[e[i].S.S];
		res+=e[i].F.F;
		res*=e[i].F.S;
		if (res < parsa) parsa = res;
	}
	cout << parsa/100;
	if (parsa%100) cout << "." << (parsa/10)%10 << parsa%10;
	cout << "\n";
}

Test details

Test 1

Verdict: ACCEPTED

input
100000 200000
83440 84424 708810295 87
28725 29724 552336091 3
76873 79637 768853492 82
73157 75801 208773467 95
...

correct output
176693844.03

user output
176693844.03

Test 2

Verdict: ACCEPTED

input
4158 76239
2106 2107 214369404 9
2615 2616 599912001 65
2736 2737 106730531 5
3122 3123 989740491 72
...

correct output
2980020476.98

user output
2980020476.98

Test 3

Verdict: ACCEPTED

input
100000 200000
61333 61375 934791657 27
57230 57459 363488259 89
94862 95081 574564520 83
29350 29358 205892730 47
...

correct output
2063342137.46

user output
2063342137.46

Test 4

Verdict: ACCEPTED

input
55959 184823
48935 48939 66931740 65
55879 55910 682673953 74
23663 23698 990216382 44
42486 42505 972883623 27
...

correct output
4779099645.25

user output
4779099645.25

Test 5

Verdict: ACCEPTED

input
100000 200000
79146 79332 484554310 35
52757 52824 784839804 4
63169 63197 671959358 77
38542 38830 850962666 26
...

correct output
1273046189.67

user output
1273046189.67

Test 6

Verdict: ACCEPTED

input
15536 166330
14900 14902 921455515 89
9329 9332 365143744 14
13868 13871 328203159 78
7822 7824 990983220 54
...

correct output
6582993331.15

user output
6582993331.15

Test 7

Verdict: ACCEPTED

input
100000 200000
89124 91195 199647214 2
58704 58990 98401141 40
56447 57157 120977342 98
65418 67693 530932650 5
...

correct output
234347497.33

user output
234347497.33

Test 8

Verdict: ACCEPTED

input
36932 93986
13379 23634 481615407 80
11370 22629 626275451 41
6043 11090 696835009 43
24878 31930 227873837 15
...

correct output
41484417.04

user output
41484417.04

Test 9

Verdict: ACCEPTED

input
100000 200000
81515 81926 207016347 20
93172 93603 517064812 89
27081 27270 942564502 93
65710 66430 161755057 23
...

correct output
663852899.14

user output
663852899.14

Test 10

Verdict: ACCEPTED

input
4286 186778
1008 1009 298863636 25
3735 3736 691053215 32
2583 2584 141648549 63
1362 1363 132628814 52
...

correct output
1265736627.37

user output
1265736627.37

Test 11

Verdict: ACCEPTED

input
100000 200000
39274 41223 667509717 39
17668 18392 794560732 87
84624 85119 258645192 82
39687 40083 222180448 9
...

correct output
204801135.31

user output
204801135.31

Test 12

Verdict: ACCEPTED

input
156 196340
115 120 885358263 74
69 70 733840613 66
47 51 194519228 36
143 144 997357319 98
...

correct output
234518.53

user output
234518.53

Test 13

Verdict: ACCEPTED

input
100000 200000
61800 98622 689416865 94
93496 96677 968883683 26
30065 73258 40047565 96
11930 20180 777906649 69
...

correct output
46500624.37

user output
46500624.37

Test 14

Verdict: ACCEPTED

input
58203 168742
20492 20819 512664683 45
35979 36073 406549228 72
22670 22884 958846926 50
3181 3366 812137674 64
...

correct output
192471624.40

user output
192471624.40

Test 15

Verdict: ACCEPTED

input
100000 200000
53792 75073 320931265 77
27716 53886 29596596 82
9946 19018 891154582 91
414 66597 2097895 61
...

correct output
52804878.55

user output
52804878.55

Test 16

Verdict: ACCEPTED

input
29790 51057
6914 7959 559807642 87
4772 6061 707689095 28
12502 14138 473393199 55
16425 16862 224827374 16
...

correct output
96426328.10

user output
96426328.10

Test 17

Verdict: ACCEPTED

input
100000 200000
49413 51160 127588771 32
34728 34779 643912757 70
14609 15317 638237969 84
72278 72351 726808755 98
...

correct output
231729444.89

user output
231729444.89

Test 18

Verdict: ACCEPTED

input
16757 154256
1874 1903 580982686 96
14236 14609 288982257 24
11085 11417 670713941 5
15130 15467 715203324 50
...

correct output
47919755.92

user output
47919755.92

Test 19

Verdict: ACCEPTED

input
100000 200000
81960 97123 353071177 60
77895 83362 530318855 51
88788 96462 763556172 10
71069 89886 859574737 51
...

correct output
46970338.23

user output
46970338.23

Test 20

Verdict: ACCEPTED

input
36582 167647
16230 16359 131627754 74
29007 29070 968621666 86
29854 30031 159358481 31
12010 12340 159218511 83
...

correct output
245097346.41

user output
245097346.41

Test 21

Verdict: ACCEPTED

input
100000 200000
24087 24412 947358065 23
43122 45521 695825811 46
41701 43009 282526216 22
54644 55241 663868618 22
...

correct output
182454553.20

user output
182454553.20

Test 22

Verdict: ACCEPTED

input
19505 82130
10844 11159 72114176 12
2598 2890 247996564 65
16334 16419 152514701 1
6449 6630 826660090 3
...

correct output
90750315.08

user output
90750315.08

Test 23

Verdict: ACCEPTED

input
100000 200000
18237 23377 495435695 99
64625 68562 165710300 17
92456 92551 809687286 63
69882 70839 463068629 94
...

correct output
107349070.08

user output
107349070.08

Test 24

Verdict: ACCEPTED

input
24334 122357
20514 20821 536592664 40
3254 4063 271689487 32
16094 17795 378738726 16
19192 21939 488115831 75
...

correct output
21531136.12

user output
21531136.12

Test 25

Verdict: ACCEPTED

input
100000 200000
52201 52304 516199490 3
44594 44790 845780568 84
99131 99307 50245171 79
32481 32509 152614952 8
...

correct output
2641004228.19

user output
2641004228.19

Test 26

Verdict: ACCEPTED

input
26099 89426
8222 8817 421562264 91
21504 21939 928132818 10
13949 14159 774448630 76
19315 19751 984491893 32
...

correct output
133812727.09

user output
133812727.09

Test 27

Verdict: ACCEPTED

input
100000 200000
58145 58370 637242643 19
24491 24661 262541209 9
62570 62672 413680288 49
71890 72126 53363827 82
...

correct output
1253750128.48

user output
1253750128.48

Test 28

Verdict: ACCEPTED

input
35877 163659
5428 5668 961665808 94
11515 11541 884764784 34
7511 7652 62813799 11
10211 10835 442538859 55
...

correct output
114218011.47

user output
114218011.47

Test 29

Verdict: ACCEPTED

input
100000 200000
32689 38720 604086442 75
17653 27003 200982141 20
5642 19524 176519335 85
44331 52918 623420216 30
...

correct output
42422753.58

user output
42422753.58

Test 30

Verdict: ACCEPTED

input
71343 146160
24454 24767 601993050 84
22024 22056 179622315 81
51552 52291 321098922 17
50645 50972 583641105 77
...

correct output
407548924.88

user output
407548924.88