from collections import deque
def solve():
try:
fin = open("sate.in", "r")
except FileNotFoundError:
return
def get_ints():
for line in fin:
for token in line.split():
yield int(token)
tokens = get_ints()
try:
n = next(tokens)
m = next(tokens)
x = next(tokens)
y = next(tokens)
except StopIteration:
fin.close()
return
adj = [[] for _ in range(n + 1)]
for _ in range(m):
i = next(tokens)
j = next(tokens)
d = next(tokens)
adj[i].append((j, d))
adj[j].append((i, -d))
fin.close()
visited = bytearray(n + 1)
pos = [0] * (n + 1)
q = deque([x])
visited[x] = 1
while q:
u = q.popleft()
if u == y:
break
for v, weight in adj[u]:
if not visited[v]:
visited[v] = 1
pos[v] = pos[u] + weight
q.append(v)
with open("sate.out", "w") as fout:
fout.write(f"{abs(pos[y])}\n")
if __name__ == '__main__':
solve()