1
# Runtime: 6190 ms (Top 5.05%) | Memory: 57.3 MB (Top 48.67%)4
self, n: int, meetings: List[List[int]], firstPerson: int13
if x not in self.parents:17
def find_parent(self, x):18
if self.parents[x] != x:19
self.parents[x] = self.find_parent(self.parents[x])20
return self.parents[x]22
def union(self, x, y):25
x, y = self.find_parent(x), self.find_parent(y)28
if self.ranks[x] > self.ranks[y]:32
if self.ranks[x] == self.ranks[y]:35
time2meets = defaultdict(list)36
for x, y, t in meetings:37
time2meets[t].append((x, y))38
time2meets = sorted(time2meets.items())40
curr_know = set([0, firstPerson])42
for time, meets in time2meets:47
groups = defaultdict(set)48
for idx in uf.parents:49
groups[uf.find_parent(idx)].add(idx)51
for group in groups.values():53
curr_know.update(group)55
return list(curr_know)