Given P pastures, C cows and their locations, and the paths connecting the pastures, choose a pasture for farmer John to put a piece of butter, making the total time that cows need to walk there minimal.
Solution
First, stimulate adjacency table with arrays to store the map. Then, enumerate the pasture to place the butter, use SPFA to calculate the distances, and find minimal total distance.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include<iostream>
#include<fstream>
#include<cstring>
#include<climits>
usingnamespacestd;
constint maxp = 802;
constint maxm = 3000;
int n,p,m;
int w[maxp],dist[maxp];
int head[maxp],next_edge[maxm],en[maxm],len[maxm];