Блог пользователя HolkinPV

Автор HolkinPV, 16 лет назад, По-русски
Решение предполагалось следующее: во первых, если длины строк не совпадали, то ответ очевидно -1. В противном случае для каждой позиции переберём букву, которую будем на нее ставить. Чтобы быстро узнать, в какую стоимость эта операция нам обойдется предподсчитаем матрицу размера Z[26][26], где в клетке (i, j) будет записана минимальная цена перехода из i-ой буквы алфавита в j-ую. Для этого воспользуемся, например, алгоритмом Флойда. Если по причине отсутствия переходов в какой то позиции в строке мы не найдем хотя бы одной подходящей буквы, то выводим -1. Иначе суммируем ответ, и выводим получившуюся строку. 
  • Проголосовать: нравится
  • +5
  • Проголосовать: не нравится

16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
I created a 2d Graph and did a simple Floyed to relax all the edges as explained .. then looped on the Strings and every time I found two characters don't match I try to find Min(graph[a][k]+graph[b][k]), where 0<=k<=25 ,and 'a' ,'b' is the character in the first ,second String respectively. 

However I'm getting a TLE on case 26 :/ .. 

any clue ? .. 

here's my code : 
16 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится
Валится на 10 тесте, если забивать в матрицу Z 10^9...
Если 10^7, то все проходит...
Может кто-нибудь объяснить в чем трабл? Вроде за пределы инта не выходит...
http://pastebin.com/690Re1Rf
Подскажите почему при INF == 10^9 вылетает 10 тест)
16 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Не заметил как исправил флойда >_<
стыдно(
вопрос снят, учусь писать флойда)