zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 与1连通的点的个数(并查集)

    试题 算法训练 与1连通的点的个数

    资源限制
    时间限制:1.0s 内存限制:256.0MB
    问题描述
      没有问题描述。
    输入格式
      输入的第一行包含两个整数n, m
      n代表图中的点的个数,m代表边的个数
      接下来m行,每行2个正整数,表示图中连通的两点。
    输出格式
      输出1个数,与1连通的点的个数。
    样例输入
    6 3
    1 2
    2 3
    3 4
    样例输出
    4
    数据规模和约定
      n<=10000,m<=100000。

    import java.util.Scanner;
    
    public class Main {
        static int n,m;
        static int[] f;
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            n = sc.nextInt();
            m = sc.nextInt();
            f = new int[n+1];
            for(int i = 1;i<=n;i++)
                f[i] = i;
            for(int i = 0;i<m;i++){
                int a = sc.nextInt();
                int b = sc.nextInt();
                join(a,b);
            }
            int x = find(1);
            int count = 0;
            for(int i = 1;i<=n;i++){
                int a = find(i);
                if(a==x)
                    count++;
            }
            System.out.println(count);
        }
    
    //查找并赋值
        static int find(int x){
            int r = x;
            while(r!=f[r])
                r = f[r];
            int i=x,j;
            while(i!=r){
                j = f[i];
                f[i] = r;
                i = j;
            }
            return r;
        }
    //查找顶级作比较
        static void join(int x,int y){
            int fx = find(x);
            int fy = find(y);
            if(fx!=fy)
                f[fx] = fy;
        }
    }
    
  • 相关阅读:
    gdb调试core文件
    设计模式之工厂模式
    设计模式之简单工厂模式
    正确理解python的装饰器
    深入理解MVC架构
    django的模板系统过滤器笔记
    python net-snmp 的使用
    用django写个CMS系统
    django的CMS系统(内容管理系统)
    RESTful 的通俗解释
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074587.html
Copyright © 2011-2022 走看看