defunion(self, x, y): xx, yy = self.find(x), self.find(y) if xx == yy: return self.pa[yy] = xx self.time[xx] = max(self.time[xx], self.time[yy])
defmain(): n, m = map(int, input().split())
routes = [] for i inrange(m): x, y, t = map(int, input().split()) routes.append((x, y, t))
# 使用匿名函数对原数据排序 village = Dsu(n) routes.sort(key=lambda x: x[2])
# 依次连接尚未在同一棵树上的两个新结点 for x, y, t in routes: if village.find(x) != village.find(y): village.time[x] = t if village.time[x] == 0elsemax(village.time[x], t) village.time[y] = t if village.time[y] == 0elsemax(village.time[y], t) village.union(x, y)
# 开始判断森林中是否只有一个根结点 # 如果不是,说明有村庄没有被联通 fathers = [] for i inrange(1, n+1): if village.pa[i] == i: fathers.append(village.time[i])