from array import array
from collections import deque
def distanta_intre_sate(adiacenta, x, y):
pozitie = [None] * len(adiacenta)
pozitie[x] = 0
coada = deque([x])
while coada:
sat = coada.popleft()
if sat == y:
return abs(pozitie[sat])
vecini = adiacenta[sat]
for i in range(0, len(vecini), 2):
vecin = vecini[i]
if pozitie[vecin] is None:
diferenta = vecini[i + 1]
pozitie[vecin] = pozitie[sat] + diferenta
coada.append(vecin)
def main():
with open("sate.in", "rb") as intrare:
n, m, x, y = map(int, intrare.readline().split())
adiacenta = [array("i") for _ in range(n + 1)]
for _ in range(m):
stanga, dreapta, distanta = map(int, intrare.readline().split())
adiacenta[stanga].extend((dreapta, distanta))
adiacenta[dreapta].extend((stanga, -distanta))
with open("sate.out", "w") as iesire:
print(distanta_intre_sate(adiacenta, x, y), file=iesire)
if __name__ == "__main__":
main()