zoukankan      html  css  js  c++  java
  • 8VC Venture Cup 2017

    题目链接:http://codeforces.com/contest/755/problem/C

    题意:PolandBall 生活在一个森林模型的环境中,定义森林由若干树组成,定义树为K个点,K-1条无向边的图。现在给定每个家庭在对应的树上离他最远的另一个家庭的编号。问这个森林有多少棵树组成。

    思路:由于只给出了每个点在树上离他最远的点的坐标而不知道整体结构,但是可以知道该点和给定离他最远的点一定是在同一颗树上,所以维护一个并查集,最后有多少个连通分量就是有多少棵树了。

    import java.io.PrintWriter;
    import java.util.*;
    
    public class Main {
        public static final int MAXN=10000+10;
        public static int fa[]=new int [MAXN];
        public static int ans;
        public static int find(int x){
            return x==fa[x] ? (fa[x]) : (fa[x]=find(fa[x]));
        }
        public static void Union(int x,int y){
            int rootx=find(x),rooty=find(y);
            if(rootx==rooty)
            {
                return;
            }
            fa[rooty]=rootx;
            ans--;
        }
        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
            PrintWriter out = new PrintWriter(System.out);
            int n=cin.nextInt(); ans=n;
            for(int i=1;i<=n;i++){
                fa[i]=i;
            }
            for(int i=1;i<=n;i++){
                Union(i,cin.nextInt());
            }
            out.println(ans);
            cin.close();
            out.flush();
        }
    }
  • 相关阅读:
    阿里云服务器购买后的配置指南
    第一阶段总结
    RDD的checkpoint机制和键值对RDD数据分区
    广播变量与累加器
    Spark的监控
    Spark和MR的区别
    hadoop离线项目处理流程
    Flume(一)
    Sparkcore高级应用3
    SparkCore高级应用2(Spark on yarn)
  • 原文地址:https://www.cnblogs.com/kirito520/p/6349431.html
Copyright © 2011-2022 走看看