fork download
  1. #include <fstream>
  2. #include <iostream>
  3. #include <string>
  4. #include <algorithm>
  5. #include <vector>
  6. #include <string.h>
  7. #include <queue>
  8. #include <math.h>
  9. #include <set>
  10.  
  11. #define min(a,b) ((a<b)?a:b)
  12. #define max(a,b) ((a<b)?b:a)
  13. #define abs(a) ((a<0)?-a:a)
  14. #define REP(i,a,b) \
  15. for (int i=a; i<=b; i++)
  16.  
  17. #define INF 10000000000001
  18.  
  19. using namespace std;
  20.  
  21. #define TEST
  22. #ifndef TEST
  23. ifstream fin ("vacation.in");
  24. ofstream fout ("vacation.out");
  25. #else
  26. #define fin cin
  27. #define fout cout
  28. #endif
  29.  
  30. #define MAXN 200
  31.  
  32. typedef long long ll;
  33.  
  34. int n,k,m,q;
  35.  
  36. ll a[MAXN][MAXN];
  37.  
  38. int rez=0;
  39. ll sum = 0;
  40.  
  41. void Floyd()
  42. {
  43. REP(ic,0,n-1)
  44. {
  45. REP(jc,0,n-1)
  46. {
  47. REP(kc,0,n-1)
  48. {
  49. if ((kc==jc) || (kc==ic) || (ic==jc)) continue;
  50. else a[jc][kc]=min(a[jc][kc],a[jc][ic]+a[ic][kc]);
  51. }
  52. }
  53. }
  54. }
  55.  
  56. int main()
  57. {
  58. fin>>n>>m>>k>>q;
  59.  
  60. REP(i,0,n-1)
  61. REP(j,0,n-1)
  62. a[i][j]=INF;
  63.  
  64. for (int i=0; i<n; i++)
  65. a[i][i]=0;
  66.  
  67. for (int i=0; i<m; i++)
  68. {
  69. int x,y,c;
  70. fin>>x>>y>>c;
  71. a[x-1][y-1]=c;
  72. }
  73.  
  74. Floyd();
  75.  
  76. for (int i=0; i<q; i++)
  77. {
  78. int x,y;
  79. fin>>x>>y;
  80. ll r = INF;
  81. for (int j=0; j<k; j++)
  82. r = min(r, a[x-1][j]+a[j][y-1]);
  83. if (r==INF) continue;
  84. rez++;
  85. sum+=r;
  86. }
  87.  
  88. fout<<rez;
  89. fout<<'\n';
  90. fout<<sum;
  91. fout<<'\n';
  92.  
  93. return 0;
  94. }
Success #stdin #stdout 0s 3612KB
stdin
50 70 2 1000
38 4 248335
44 39 19213
20 9 81808
40 45 470787
1 37 498644
49 32 416304
23 33 447893
40 37 336343
46 26 665851
49 30 693710
8 6 452945
5 41 115793
2 15 490835
13 35 125152
42 44 199831
44 28 591394
2 37 839587
36 19 275995
31 26 95314
46 20 788728
32 47 91285
1 46 909103
39 22 260992
1 3 759025
42 2 700630
5 30 271852
19 47 935602
1 27 584559
45 13 998185
2 20 487054
16 22 806252
1 15 346630
1 40 543368
46 25 482807
14 6 762341
20 14 467624
49 38 908932
2 49 559812
2 31 816800
25 7 522058
2 43 831163
21 38 683852
2 7 628556
2 23 952503
43 3 619147
6 40 473864
30 7 319271
18 30 785426
21 1 719039
47 19 693390
16 29 623445
27 46 873352
44 48 520952
26 38 31461
2 14 602647
23 13 443950
22 19 430158
31 47 226205
14 23 796325
1 22 436842
47 6 550799
2 48 820246
39 49 186366
2 17 60710
4 29 257579
2 39 652765
33 25 397275
2 12 841946
29 37 879286
28 31 586832
1 48
1 24
11 2
29 32
24 2
12 2
2 1
15 27
37 17
2 23
23 2
1 25
5 16
1 2
1 20
21 1
8 3
1 47
2 32
6 25
39 4
11 2
1 40
2 28
3 38
4 8
2 1
40 5
2 1
32 8
1 14
22 14
2 1
9 1
38 24
2 10
15 46
1 2
36 9
46 2
35 1
17 19
46 50
2 34
23 1
2 1
35 2
2 49
2 1
1 2
2 21
1 16
7 1
44 29
1 38
27 46
33 1
1 2
8 2
44 41
1 45
18 2
21 39
43 1
49 5
2 26
1 2
1 24
33 1
4 40
16 3
19 22
2 7
10 1
18 48
2 28
2 1
2 1
7 2
28 1
34 2
1 2
47 49
43 10
19 2
2 8
42 2
15 36
1 19
2 20
2 34
28 1
49 35
47 2
11 31
2 9
2 1
2 42
47 1
2 28
1 9
1 11
2 21
2 5
2 3
2 27
1 41
2 21
43 12
45 44
2 43
1 2
3 1
1 2
17 1
1 28
38 45
1 24
48 2
2 1
2 33
9 11
36 29
1 19
1 30
2 3
17 8
23 44
15 39
9 14
1 2
1 18
11 1
29 46
1 16
2 15
2 36
23 33
1 34
11 2
2 29
12 19
32 1
42 1
2 1
42 23
3 5
36 1
15 2
48 49
42 1
4 2
16 21
2 1
43 24
27 1
28 1
2 1
34 2
1 2
14 2
23 2
2 29
11 2
2 44
10 1
2 1
2 1
34 1
20 18
36 1
2 26
40 1
50 1
2 28
31 22
2 1
48 1
47 1
11 2
2 33
22 1
1 17
2 11
2 1
15 25
1 19
1 2
23 3
11 2
47 29
6 1
11 2
1 2
1 35
29 2
34 2
22 18
5 21
48 1
39 33
25 1
2 1
2 44
2 17
2 29
2 44
47 2
2 25
47 26
1 2
20 24
2 50
34 41
36 1
1 20
34 1
22 19
44 2
48 1
2 48
2 1
43 19
2 1
41 2
1 31
19 2
32 7
2 1
36 19
36 2
34 2
12 2
1 27
34 48
1 7
43 1
1 2
32 2
1 41
2 43
1 33
2 1
1 4
26 13
10 1
16 2
42 2
1 31
1 2
1 2
2 1
38 1
46 1
2 38
12 9
36 2
2 1
2 25
48 2
2 10
2 12
28 2
2 37
1 2
31 2
11 27
34 12
44 1
11 19
8 40
14 8
46 35
10 39
18 12
2 1
2 7
2 1
11 34
41 16
2 11
1 2
32 1
15 6
27 1
18 37
5 8
2 1
1 2
37 50
30 26
6 38
21 32
1 50
16 1
1 33
20 19
32 1
41 2
2 1
2 42
13 35
9 38
2 14
1 33
2 13
1 35
44 11
6 27
11 50
32 1
2 30
47 36
14 7
1 9
2 28
10 13
15 1
23 1
43 42
24 1
30 37
1 14
22 2
1 31
13 1
13 48
11 1
9 18
25 1
2 6
1 2
31 13
8 1
7 2
1 15
1 44
3 27
2 50
1 41
1 31
1 24
2 41
49 1
31 1
31 23
2 39
25 18
24 2
13 30
16 31
13 1
47 1
47 22
10 1
1 41
19 2
29 2
44 24
2 40
41 31
40 2
1 2
2 1
24 10
28 1
28 2
22 40
1 36
1 47
1 16
28 2
2 1
45 5
26 2
46 33
41 2
11 34
2 23
1 12
19 12
22 2
31 35
27 1
31 23
2 18
50 1
1 17
32 50
2 1
1 2
28 1
1 25
28 2
1 2
1 14
2 30
29 15
8 1
2 39
4 1
2 5
5 1
20 28
4 8
2 1
39 1
2 23
1 8
41 2
1 2
5 1
13 34
1 2
33 17
34 2
30 2
2 22
27 1
21 2
1 2
18 2
2 33
44 48
32 11
27 2
45 1
2 6
17 11
1 2
1 47
1 9
1 49
36 1
3 26
18 1
41 6
13 31
5 1
20 31
19 2
16 2
13 35
20 2
48 1
37 1
14 3
35 2
41 39
44 2
38 43
44 18
1 20
49 45
2 20
49 2
29 43
15 2
1 50
2 1
1 2
31 25
1 11
2 46
27 1
25 8
50 1
39 1
24 50
39 31
1 23
31 2
14 21
1 17
16 2
1 11
2 21
1 2
27 24
2 1
1 35
32 2
2 3
2 13
2 1
1 38
36 1
1 2
26 1
2 25
9 48
2 5
33 28
29 36
42 13
1 2
9 2
1 32
20 2
2 1
19 1
1 25
1 31
1 14
22 1
28 36
11 4
1 34
12 1
1 2
26 2
2 19
45 14
44 1
5 44
30 2
11 1
39 2
1 2
1 4
2 45
20 3
1 31
26 2
2 31
2 8
3 2
1 2
1 28
1 7
38 22
26 24
2 1
2 38
16 2
2 5
20 36
30 1
1 23
2 50
2 19
7 1
35 2
1 22
42 15
45 1
31 30
46 28
11 27
1 12
5 2
2 36
4 42
1 21
5 33
34 17
1 25
18 14
35 6
1 2
1 2
15 1
2 12
2 1
2 43
1 43
1 5
49 2
15 1
21 8
2 36
19 20
33 10
1 44
1 2
42 17
1 2
2 35
2 46
1 30
2 1
16 2
1 30
1 26
2 41
38 1
1 46
41 44
34 50
8 15
2 1
1 2
17 2
10 1
26 1
47 14
2 1
22 1
22 37
49 34
40 1
2 38
7 9
30 49
13 2
1 36
34 19
2 31
2 1
2 1
33 1
11 32
2 31
1 27
38 8
13 16
15 1
25 1
19 1
1 4
2 13
2 1
27 21
39 32
49 1
30 1
50 1
7 1
19 1
2 15
45 30
2 6
23 2
43 33
1 2
2 45
1 21
32 21
2 38
2 1
32 43
31 20
2 40
1 46
9 1
16 1
3 2
2 28
3 26
2 1
40 4
2 1
35 1
2 1
28 2
17 4
2 26
30 19
1 2
1 5
6 22
1 49
1 5
15 1
19 2
46 2
39 1
7 29
1 6
2 1
3 25
31 41
2 1
2 48
20 3
2 48
25 2
2 24
2 1
5 48
2 48
25 2
48 21
1 2
16 2
6 37
23 42
37 7
2 40
23 13
6 9
1 24
2 1
32 2
1 2
1 31
1 22
27 31
2 1
19 14
42 11
30 9
29 19
1 2
1 42
21 1
2 1
48 8
42 2
42 2
49 1
4 1
26 2
2 26
40 2
21 2
13 18
36 1
2 1
30 2
11 2
24 32
17 2
32 1
38 21
48 18
1 16
24 36
33 50
24 1
2 49
2 1
1 20
50 20
40 1
49 2
1 2
18 16
2 39
1 2
11 2
1 42
2 45
29 1
26 1
1 2
30 3
11 1
1 48
1 2
2 1
11 1
1 2
2 11
2 34
7 16
1 2
28 35
2 13
10 15
2 48
2 47
20 9
1 36
2 41
1 31
32 28
1 24
1 16
17 25
15 2
1 49
50 1
1 40
2 18
2 12
1 18
45 1
1 24
2 13
19 48
12 25
14 2
36 1
32 2
19 14
7 1
25 2
2 6
17 8
28 15
1 2
12 2
3 31
31 2
2 4
37 45
9 18
2 19
22 40
1 34
50 13
1 24
2 1
2 31
12 8
28 1
22 4
2 43
1 18
50 5
2 24
43 41
4 2
1 22
2 34
1 2
47 27
42 9
1 35
3 15
2 5
20 2
2 7
16 2
1 44
31 21
2 1
1 2
26 1
2 46
2 26
27 1
1 2
2 1
2 1
1 49
2 1
1 6
2 19
1 25
28 35
25 27
12 19
41 1
3 1
9 1
29 39
1 2
23 41
2 10
2 27
2 1
1 42
2 19
38 11
49 1
42 1
34 1
35 25
23 38
25 45
2 1
32 2
2 6
1 5
27 1
1 23
4 17
44 17
48 1
2 39
1 49
1 39
1 50
2 7
1 29
30 1
2 47
44 1
1 25
1 19
42 44
41 12
1 36
45 2
39 1
7 19
1 32
2 37
45 13
10 1
2 1
2 20
22 1
1 2
8 1
2 6
36 1
39 4
2 23
2 13
40 33
1 2
28 10
38 1
38 2
1 2
45 2
1 2
30 39
2 1
15 2
4 1
2 1
33 19
13 2
15 46
1 2
1 2
12 40
48 1
10 2
49 26
41 21
22 7
1 24
1 33
1 2
2 1
2 1
1 2
22 41
2 32
22 1
1 37
15 1
38 1
32 8
17 1
23 16
45 1
2 1
42 34
28 32
26 14
37 1
34 2
30 2
1 37
2 1
2 6
14 1
2 1
34 2
7 2
1 37
31 30
44 50
47 50
6 2
22 16
16 2
35 1
38 43
18 3
2 1
2 9
3 1
2 1
45 2
1 47
2 13
1 2
4 33
49 29
1 31
15 39
37 7
1 15
2 38
27 2
36 2
33 1
1 48
1 2
1 4
1 9
1 2
30 2
43 15
27 2
2 39
38 8
50 1
26 37
37 22
8 2
37 2
2 6
stdout
174
222784879