1204C Anna, Святослава и Карты

С учетом эффекта

Дайте вам карту и путь к

Позволяет выбрать точку равно как можно меньше, так что новый путь кратчайшей длины и оригинальный путь в данном пути

Расстояние между двумя точками рядом с заданной траекторией 1

анализ

Флойд первым найти кратчайший путь между двумя точками

После каждой точки я, чтобы найти все самое короткое расстояние говорит = расстояние, чтобы построить точку J в последовательности

Дп [I] передается дп [J], чтобы

код

#include <iostream> 
#include <cstdio> 
#include <CString> 
#include < строка > 
#include <алгоритм> 
#include <cctype> 
#include <CMATH> 
#include <cstdlib> 
#include <очереди> 
#include <CTime> 
# include <вектор> 
#include < установлен > 
#include <карта> 
#include <стек>
 используя  пространство имен станд;
INT d [ 110 ] [ 110 ],], п, т, дп [ 1001000 ], ла [ 1001000 ], а [ 1001000 ], CNT, ANS [ 1001000 ];
символ с [ 110 ];
INT основных () {
     Int I, J, K; 
    зсапЕ ( " % d " , & п); 
    MemSet (д, 0x3f , SizeOf (г));
    для (я = 1 ; г <= п; я ++ ) { 
      зсапЕ ( " % s " , s + 1 );
      для (J = 1 , J = <N; j ++ ) 
        г [I] [J] = S [J] -' 0 ' ; 
    } 
    Для (я = 1 ; г <= п; я ++ )
       для (J = 1 , J <= N; j ++ )
         , если (г [я] [J]) D [I] [J] = г [I] [ J];
    для (к = 1 , K <= N; K ++ )
       для (я = 1 ; г <= п; я ++ )
         для (J = 1 , J <= N; j ++) , если (! я = к) 
          д [I] [J] = мин (D [I] [J], D [I] [K] + d [K] [J]); 
    зсапЕ ( " % d " , & м);
    для (я = 1; я <= т; я ++) Scanf ( " % D " , & в [I]); 
    MemSet (дп, 0x3f , SizeOf (др)); 
    дп [ 1 ] = 1 ;
    для (я = 1 ; я <= т; я ++ ) { 
      J = я;
      в то время как (J + 1 <= т && д [а [я]] [а [J + 1 ]] == J-I + 1 ) { 
          J ++ ;
        если (дп [I] + 1 < дп [J]) { 
            дп [J] = дп [I] + 1 ; 
            ла [J] = I;
        } 
      } 
    } 
    Е ( " % d \ п " , дп [м]);
    INT х = м;
    в то время как (х) { 
      ANS [ ++ CNT] = А [х]; 
      х = ла [х]; 
    } 
    Для (I = CNT, я> 0 ; я -) Е ( " % D " , анс [I]); 
    ставит ( "" );
    вернуться  0 ; 
}

рекомендация

отwww.cnblogs.com/yzxverygood/p/11415181.html