/* * Calculate the value of friendships */ public static long RunUnionFind(int[][] edges) { var unionFind = new UnionFind(); int count = 0; foreach (var edge in edges) { var left = edge[0]; var right = edge[1]; if (left == right) { continue; } if (unionFind.IsSameGroup(left, right)) { count++; continue; } unionFind.Unite(left, right); } var groups = unionFind.GetGroups().Where(v => v != 0).Select(v => v + 1).ToList(); groups.Sort(); groups.Reverse(); return(groups[0]); }
/* * Calculate the value of friendships */ public static void RunUnionFindTestCase() { var unionFind = new UnionFind(); var edges = new int[6][]; edges[0] = new int[] { 1, 2 }; edges[1] = new int[] { 7, 4 }; edges[2] = new int[] { 7, 3 }; edges[3] = new int[] { 5, 8 }; edges[4] = new int[] { 1, 3 }; edges[5] = new int[] { 7, 3 }; int count = 0; foreach (var edge in edges) { var left = edge[0]; var right = edge[1]; if (left == right) { continue; } if (unionFind.IsSameGroup(left, right)) { count++; continue; } unionFind.Unite(left, right); } var groups = unionFind.GetGroups().Where(v => v != 0).Select(v => v + 1).ToList(); groups.Sort(); groups.Reverse(); }