local ior = io.input() local n, m, k, s, t = ior:read("*n", "*n", "*n", "*n", "*n") local bridge = {} for i = 1, n - 1 do bridge[i] = {} end for i = 1, m do local a, b, c = ior:read("*n", "*n", "*n") local tmp = {} tmp.b, tmp.c = b, c table.insert(bridge[a], tmp) end local mmi = math.min local poslist = {} poslist[s] = 0 for i = 1, n - 1 do local npos = {} for floor, cost in pairs(poslist) do local br = bridge[i] for j = 1, #br do local ncost = cost + math.abs(floor - br[j].b) if(npos[br[j].c] == nil) then npos[br[j].c] = ncost else npos[br[j].c] = mmi(npos[br[j].c], ncost) end end end poslist = npos end local lastval = -1 for floor, cost in pairs(poslist) do local ncost = cost + math.abs(floor - t) if(lastval < 0) then lastval = ncost else lastval = mmi(lastval, ncost) end end print(lastval)