zoukankan      html  css  js  c++  java
  • Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)

    试题 算法训练 连通分块

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述在这里插入图片描述

    资源限制
    时间限制:200ms 内存限制:8.0MB

    问题描述
      连通分块
    输入格式
      输入的第一行包含两个整数n, m
      n代表图中的点的个数,m代表边的个数
      接下来m行,每行2个正整数,表示图中连通的两点。
    输出格式
      输出1行,与1连通的点的集合,并按升序排列输出。
    样例输入
    6 3
    1 2
    2 3
    3 4
    样例输出
    1 2 3 4
    数据规模和约定
      n<=10000,m<=100000

    package 蓝桥杯官网;
    
    import java.util.Scanner;
    
    public class 连通分块 {
    
        //https://blog.csdn.net/a1439775520/article/details/90746562  欢迎进入讨论群
        public static int[] f;
    
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            int m = sc.nextInt();
            f = new int[n + 1];
            int x, y;
            for (int i = 1; i <= n; i++) {
                f[i] = i;
            }
            for (int i = 0; i < m; i++) {
                x = sc.nextInt();
                y = sc.nextInt();
                setinfo(x, y);
            }
            for (int i = 1; i <= n; i++) {
                if (f[i] == 1) System.out.print(i + " ");
            }
    
        }
    
        public static void setinfo(int a, int b) {
            int fa = find(a);
            int fb = find(b);
            if (fa > fb) {
                f[fa] = fb;
            } else {
                f[fb] = fa;
            }
        }
    
        public static int find(int num) {
            if (num != f[num]) {
                int temp = find(f[num]);
                f[num] = temp;
            }
            return f[num];
        }
    }
    
    
  • 相关阅读:
    Mysql 怎么限制 IP 访问?
    LA2965 n个数中选出最多个数异或和为0
    UVALive 2678 大于s的最短子序列和
    UVA 1193 区间相关(greedy)
    UVA 11992 线段树
    UVA 1400 线段树
    NBUT 1120 线段树
    最大连续区间和的算法总结(转)
    hiho 1015 KMP
    hiho#1128 : 二分·二分查找
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13074584.html
Copyright © 2011-2022 走看看