zoukankan      html  css  js  c++  java
  • JAVA并查集

    题目描述

    在某个城市中住着n个人,现在给定关于这n个人的m条信息(即某2个人认识)。

    假设所有认识的人一定属于同一个单位,请计算该城市有多少个单位?

    输入

    第1行的第1个值表示总人数n,第2个值表示总信息数m;第2行开始为具体的认识关系信息

    输出

    单位的个数

    样例输入 Copy

    10 4
    2 3
    4 5
    4 8
    5 8

    样例输出 Copy

    7

    package book;
    
    import java.util.Scanner;
    
    /*
     * 并查集
     */
    public class Uoion {
    
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		int n=sc.nextInt();//n个人
    		int m=sc.nextInt();//m条信息
    		int father[]=new int[n];
    		int count=0;
    		int pre[]=new int[n];
    		for(int i=0;i<n;i++) {
    			father[i]=Integer.MAX_VALUE;
    			pre[i]=i;
    		}
    		for(int i=0;i<m;i++) {
    			int dad=sc.nextInt();
    			int child=sc.nextInt();
    			pre[child]=dad;
    		}
    		for(int i=0;i<n;i++) {
    			boolean fa=true;
    			int re=slove(i,pre);
    			for(int j=0;j<n;j++) {
    				if(re==father[j]) {
    					fa=false;
    				}
    			}
    			if(fa) {
    				father[i]=re;
    			}
    		}
    		 for(int i=0;i<n;i++) {
    	        	if(father[i]!=Integer.MAX_VALUE) {
    	        		count++;
    	        	}
    	        }
    	        System.out.println(count);
    	  }
    
    	private static int slove(int i, int[] pre) {
    	   if(i==pre[i]) {
    		   return pre[i];
    	   }
    	   else{
    		   return slove(pre[i],pre);
    	   }
    		
    	}
    
    }
  • 相关阅读:
    js闭包
    python切片 []取值操作符
    python with语句
    python鸭子类型(duck type)
    python编码规范
    python @property使用详解
    python __slots__使用详解
    Python面向对象编程
    ifconfig命令详解
    5、Cocos2dx 3.0游戏开发找小三之測试例子简单介绍及小结
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13309577.html
Copyright © 2011-2022 走看看