주제 링크 : https://nanti.jisuanke.com/t/41349
질문의 의미 :이 것은 소방 영웅과 소방 팀, 팀 남자와 비교입니다.
다른 화재의 팀과 함께, 최대 포인트 소화에 최단 영웅 다른 소방 비교를 위해, 최대 거리 * C의 짧은 점.
우리는 가상 점 "0"점을 구축 할 수 있도록 한 점 k에 하나 개의 팀이 가장 짧은 점 k는 0의 경우, 가장 짧은 팀을 실행
다른 팀 구성원이 INF로 다른 점, 0을 가리 키도록 "0"점을하자, 다음 가장 단락 그 중 하나를 실행할 수, 다음 코드 변경, 너무 게으른 게임 시간, 직접보고 쓴 어렵다.
1 #INCLUDE <iostream> 2 #INCLUDE <CString을> 3 #INCLUDE <알고리즘> 4 #INCLUDE <cstdio> 5 #INCLUDE < 문자열 > 6 이용한 스페이스 성병; 7 8 의 typedef 긴 긴 LL; 9 #DEFINE INF 1E9 10 #DEFINE 렙 (I, J, K)에 대해 INT (I = (j) 내가 = (K <); 나는 ++) 11 #DEFINE 렙 __ (i, j, k)에 대해 (ⅰ에서 INT = (j) 내가 <(K); I ++) 12 #DEFINE = (K), 난 -) I, 당 (I, J, K) (INT I = (j 대)> 13 #DEFINE__ (i, j, k)에 대해 당은 (i = (j를 INT); I> (K), 난 -) 14 15 CONST의 INT = N (1100) ; 16 BOOL 힘 [N]; 17 INT의 MP [N] [N]; 18 BOOL이 소성 [N]; 19 INT의 팀 [N]; 20 INT DIS [N]; 21 INT의 V, E, S, K, C; (22) (23) 의 INT 익스트라 ( INT의 S) { 24 25 렙 (I, 1 , V) 힘 [I] = 거짓 ; (26) (27) 의 경우 (S) { 28 렙 (I,1 , V) DIS [I] = INF; 29 렙 (I, 1 , V) DIS [내가] = MP [S] [I]; 도 30은 힘 [들] = 참 ; 31 32 렙 (I, 2 , V) { // 团队的 33 (34) INT (X) = - 1 ; 35 INT C = INF; 36 37 렙 (j, 1 , V) { 38 (39) 의 경우 X = J, C = (힘 [J] && C> DIS [J]!) DIS [J] (40) } (41) 의 경우 (X == - 1) 계속 ; (42) (43)은 힘 [X] = 참 ; 44 렙 (p, 1 , V) { 45 의 경우 (! 힘 [P] && DIS [X] + MP [X] [P] < DIS [P]) { 46 DIS [P] = DIS [X] + MP [X] [P]; 47 } 48 } 49 50 } 51 } (52) 또 { // 英雄的 53 렙 (I, 1 , V) DIS [I] = INF; 54 렙 (I, 1, K는) 팀 [I] DIS = 0 ; (55)은 힘 [들] = 참 ; 56 (57) 렙 (I, 1 , V) { 58 (59) INT (X) = - 1 ; 60 INT C = INF; 61 62 렙 (j, 1 , V) { 63 (64) 의 경우 X = J, C = (힘 [J] && C> DIS [J]!) DIS [J] (65) } (66) 의 경우 (X == - 1 ) 계속 ; 67 68 힘 [X] = 참; 69 렙 (p, 1 , V) { 70 의 경우 (! 힘 [P] && DIS [X] + MP [X] [P] < DIS [P]) { 71 DIS [P] = DIS [X] + MP [X] [P]; 72 } 73 } 74 75 } 76 } 77 78 79 INT ANS = 0 ; 80 렙 (I, 1 , V) { 81 (82) 의 경우 (DIS [I] == INF) 계속 ; 83 의 경우 (소성 [I]) ANS = 최대 (ANS, DIS [I]); 84 } 85 86 복귀 ANS; 87 } 88 89 INT 의 main () { 90 91 IOS :: sync_with_stdio ( 거짓 ); 92 cin.tie ( 0 ); (93) (94) INT T; 95 CIN >> T; 96 97 INT를 p = 0 ; 98 INT에 Q = 0 ; 99 동안 (T-- ) { 100 CIN V >> >> E >> S K >> >> C; 101 102 렙 (I, 1 , V) 렙 (j, 1 , V) { 103 경우 (I == J) MP [I] [J] = 0 ; 104 다른 MP [I] [J] = INF; 105 } 106 107 렙 (I, 1 , K) { 108 CIN >> 팀 [I]; 109 } 110 111 int로 U를, V, w; 112 113 렙 (I, 1 , E) { 114 CIN >> >> U V >> w; 115 [V] = 소성 참 ; 116 만약(MP [U] [V]> W는) { 117 MP [U]는 [V]를 MP = [V] [U] = w; 118 } 119 } 120 121 p = 익스트라 (S); // 英雄 122 123 Q = 익스트라 ( 0 ); // 团队 124 125 의 경우 (p <= Q * C) COUT << P << ENDL; 126 또 COUT << Q << ENDL; 127 } 128 129 getchar가 (); getchar가 (); 130 131 복귀 0 ; 132 }