anjoub 2021-11-08 23:21 采纳率: 0%
浏览 47
已结题

java-畅通工程某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。

import java.util.Scanner;
public class Main {
    static class Union{
        private int parent[];//当前节点给的父节点
        private int count;//连通分量中节点的个数
        public Union(int count){
            parent = new int[count+1];
            this.count = count;
            for (int i = 1; i <= count; i++) {
                parent[i] = i;//使每个节点指向自己,即不再任何集合中
            }
        }
        int find(int p){
        return p == parent[p] ? p : find(parent[p]);
        }
        void unionElements(int p,int q){
            int pRoot = find(p);
            int qRoot = find(q);
            if (pRoot==qRoot){
                return;
            }
            parent[pRoot] = qRoot;
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        PrintWriter pr = new PrintWriter(System.out);
        int count = 0;
        while (sc.hasNext()){
            count = 0;
            int n = sc.nextInt();//代表多少个城镇
            if (n==0) break;
            int m = sc.nextInt();//代表有多少条路
            Union union = new Union(n);//城市下标从1开始
            //接下来输入道路,并连接城市
            for (int i = 0; i < m; i++) {
                int x = sc.nextInt();
                int y = sc.nextInt();
                union.unionElements(x,y);//连接城市
            }
            for (int i = 1; i <= n; i++) {
                if (union.parent[i]==i){//父节点没有变的,就是未接通的
                    count++;
                }
            }
            System.out.println(count-1);
        }


    }

}
  • 写回答

1条回答 默认 最新

  • anjoub 2021-11-08 23:24
    关注

    简单的并查集问题

    评论

报告相同问题?

问题事件

  • 系统已结题 11月16日
  • 创建了问题 11月8日

悬赏问题

  • ¥100 科大讯飞语音唤醒词,unbuntu环境,报错
  • ¥15 可以实现这个有不同背景颜色的九九乘法表吗?
  • ¥50 python写segy数据时出错2
  • ¥20 关于R studio 做精确稳定检验的问题!(语言-r语言)
  • ¥50 用贝叶斯决策方法,设计CAD程序
  • ¥20 关于#目标检测#的问题:(qq收集表到时间才能填写,填写的份数有上限)
  • ¥50 ZYNQ7020双核FLAHS烧写的问题
  • ¥20 ue 5 中想要实现第一人称人物左右行走摆动的效果,摄像头只向右摆动一次(关键词-结点)
  • ¥15 AD9164瞬时带宽1.8G,怎么计算出来?
  • ¥15 鼠标右键,撤销删除 复制 移动,要怎样删除? HKEY_CLASSES_ROOT*\shellex\ContextMenuHandlers 没用