- 1#pragma GCC optimize("O3") 2#include 3#include 4#define inf 0x7fffffff >> 1 5 inline int min(const int a, const int b) {
- 6
- return aa: b;
- 7
- }
- 8 inline int getint() {
- 9 int ch;
- 10
- while (!isdigit(ch = getchar()));
- 11 int x = ch ^ '0';
- 12
- while (isdigit(ch = getchar())) x = ((x + (x << 2)) << 1) + (ch ^ '0');
- 13
- return x;
- 14
- }
- 15 int main() {
- 16 int p = getint(),
- F = getint(),
- C = getint();
- 17 int f[F];
- 18
- for (int i = 0; i) {
- 19 f[i] = getint();
- 20
- }
- 21 int c[p + 1][p + 1];
- 22
- for (int i = 1; i <= p; i++) {
- 23
- for (int j = 1; j <= p; j++) {
- 24 c[i][j] = (i == j) ? 0 : inf;
- 25
- }
- 26
- }
- 27
- for (int i = 0; i) {
- 28 int a = getint(),
- b = getint(),
- t = getint();
- 29 c[b][a] = c[a][b] = t;
- 30
- }
- 31
- for (int k = 1; k <= p; k++) {
- 32
- for (int i = 1; i <= p; i++) {
- 33
- for (int j = 1; j <= p; j++) {
- 34 c[i][j] = min(c[i][j], c[i][k] + c[k][j]);
- 35
- }
- 36
- }
- 37
- }
- 38 int ans,
- mmin = inf;
- 39
- for (int i = 1; i <= p; i++) {
- 40 int tmp = 0;
- 41
- for (int j = 0; j) {
- 42 tmp += c[i][f[j]];
- 43
- }
- 44
- if (tmp < mmin) {
- 45 ans = i;
- 46 mmin = tmp;
- 47
- }
- 48
- }
- 49 printf("%d\n", ans);
- 50
- return 0;
- 51
- }
来源: http://www.bubuko.com/infodetail-2082300.html