from collections import deque
def solve():
try:
with open("sate.in", "r") as fin:
data = fin.read().split()
except FileNotFoundError:
return
if not data:
return
n = int(data[0])
m = int(data[1])
x = int(data[2])
y = int(data[3])
adj = [[] for _ in range(n + 1)]
idx = 4
for _ in range(m):
i = int(data[idx])
j = int(data[idx + 1])
d = int(data[idx + 2])
idx += 3
adj[i].append((j, d))
adj[j].append((i, -d))
visited = [False] * (n + 1)
pos = [0] * (n + 1)
q = deque([x])
visited[x] = True
pos[x] = 0
while q:
u = q.popleft()
if u == y:
break
for v, weight in adj[u]:
if not visited[v]:
visited[v] = True
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()