并查集理论基础
文章转自“代码随想录”:并集查询理论基础
寻找存在的路径
题目链接:卡码网题目链接(ACM模式)
思路:直接使用并查集理论相关代码即可实现。
import java.util.Scanner;
public class Main{public static int[] father;public static void main (String[] args) {Scanner sc = new Scanner(System.in);int nums = sc.nextInt();int roads = sc.nextInt();father = new int[nums+1];for(int i=1;i<=nums;i++){father[i]=i;}for(int road=0;road<roads;road++){join(sc.nextInt(),sc.nextInt());}System.out.println(isSame(sc.nextInt(),sc.nextInt()) ? 1 : 0);}public static void join(int u, int v) {u = find(u); // 寻找u的根v = find(v); // 寻找v的根if (u == v) return ; // 如果发现根相同,则说明在一个集合,不用两个节点相连直接返回father[v] = u;}public static int find(int u) {if(u==father[u]) return u;return father[u]=find(father[u]);}public static boolean isSame(int u, int v) {u = find(u);v = find(v);return u == v;}}