silence


私信TA

用户名:uq_37085913182

访问量:3153

签 名:

等  级
排  名 3797
经  验 1763
参赛次数 0
文章发表 8
年  龄 22
在职情况 学生
学  校 贵州商学院
专  业 电子商务

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Main {
	static Map<Integer, UnionNode.Node> pntAndMap = new HashMap<Integer, UnionNode.Node>();
	static Set<UnionNode.Node> nod = new HashSet<UnionNode.Node>();
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m  = sc.nextInt();
		int n = sc.nextInt();
		int index = 1;
		int[][] a =new int[m+1][n+1];
		for (int i = 1; i <= m; i++) {
			for (int j = 1; j <= n; j++) {
				a[i][j] = index++;
				pntAndMap.put(a[i][j], new UnionNode.Node());
			}
		}
		int k = sc.nextInt();
		for (int i = 0; i < k; i++) {
			UnionNode.Node s = pntAndMap.get(sc.nextInt());
			UnionNode.Node e = pntAndMap.get(sc.nextInt());
			
			if(UnionNode.find(s) != UnionNode.find(e)){
				UnionNode.Union(s, e);
			}
		}
		
		Set<UnionNode.Node> res = new HashSet<>();
		for (int i = 1; i < a.length; i++) {
			for (int j = 1; j < a[i].length; j++) {
				UnionNode.Node node = pntAndMap.get(a[i][j]);
				UnionNode.Node f = UnionNode.find(node);
				res.add(f);
			}
		}
		System.out.println(res.size());
	}
}
class UnionNode{
	
	public static Node find(Node x){
		Node p = x;
		Set<Node> set = new HashSet<>();
		while(p.parent != null){
			set.add(p);
			p = p.parent;
			
		}
		
		for (Node node : set) {
			node.parent = p;
		}
		return p;
	}
	
	public static void Union(Node x, Node y){
		find(y).parent = find(x);
	}
	static class Node{
		public Node parent;
	}
}


 

0.0分

1 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区