做一次修改,会把所有的x变成y
问要做多少次修改,才能保证两个数组中的数字是一样的
package test.meituan;import java.util.Scanner;public class Main4 {static class UF {private int[] parent;public UF(int n) {parent = new int[n];for (int i = 0; i < n; i++) {parent[i] = i;}}public void union(int p, int q) {int rootP = find(p);int rootQ = find(q);if (rootP == rootQ)return;parent[rootP] = rootQ;}public boolean connected(int p, int q) {int rootP = find(p);int rootQ = find(q);return rootP == rootQ;}private int find(int x) {if (x != parent[x]) {int p = parent[x];parent[x] = find(p);}return parent[x];}}public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();int[] left = new int[n / 2];int[] right = new int[n / 2];for (int i = 0; i < n / 2; i++) {left[i] = in.nextInt();}for (int i = 0; i < n / 2; i++) {right[i] = in.nextInt();}UF uf = new UF(100000);long modify = 0;for (int i = 0; i < n / 2; i++) {if (!uf.connected(left[i], right[i])) {uf.union(left[i], right[i]);modify++;}}System.out.println(modify);}}
