• 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;
        }
    }
    
  • 相关阅读:
    给X轴添加滚动条,放大X轴Y轴
    win7下发布网站
    asp.net播放声音
    用Flash方式动态生成图表
    debian programming guid
    php 自动跳转的3种方法
    用expect实现su c功能,身份切换
    11 Top Opensource Resources for Cloud Computing
    转:Linux系统下Shell命令行快捷键实用技巧
    sed 替换
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12946133.html
Copyright © 2020-2023  润新知