public static int[] maxCircle(int[][] queries) { int maxFriendCircle = int.MinValue; int[] maxes = new int[queries.Length]; Dictionary <int, UnionFindNode> people = new Dictionary <int, UnionFindNode>(); for (int i = 0; i < queries.Length; i++) { UnionFindNode p1 = AddPerson(queries[i][0], people); UnionFindNode p2 = AddPerson(queries[i][1], people); UnionFindNode p1Root = p1.GetRoot(); UnionFindNode p2Root = p2.GetRoot(); if (p1Root.id != p2Root.id) { UnionFindNode newRoot = Union(p1Root, p2Root); maxFriendCircle = Math.Max(maxFriendCircle, newRoot.size); } maxes[i] = maxFriendCircle; } return(maxes); }