class Solution:
    def minScore(self, n: int, roads: List[List[int]]) -> int:
        _par = [i for i in range(n + 1)]
        _sz = [1] * (n + 1)
        def find(x):
            if x == _par[x]:
                return x
            _par[x] = find(_par[x])
            return _par[x]
        def merge(x, y):
            x, y = find(x), find(y)
            if _sz[x] < _sz[y]:
                x, y = y, x
            _sz[x] += _sz[y]
            _par[y] = x

        for (a, b, dis) in roads:
            merge(a, b)
        
        ans = float("INF")
        dest = find(n)
        for (a, b, dis) in roads:
            if find(a) == dest:
                ans = min(ans, dis)
    
        return ans
