HDOJ 1325 并查集】的更多相关文章

跟小希的迷宫基本一样,只是此题是有向图,要注意:1无环 2 只有一个入度为0的结点(根结点), 不存在入度大于1的结点.输入结束条件是两个负数,而不是-1,不然会TLE. #include<stdio.h> #define NUM 23 int root[NUM], visit[NUM], lu[NUM]; void init(){ ; i<=NUM; i++){ root[i]=i; visit[i]=; lu[i]=; } } int find(int x){ while(root[…
小希的迷宫 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21562    Accepted Submission(s): 6591 Problem Description 上次Gardon的迷宫城堡小希玩了很久(见Problem B),现在她也想设计一个迷宫让Gardon来走.但是她设计迷宫的思路不一样,首先她认为所有的通道都应该是…
思路来源:http://blog.csdn.net/niushuai666/article/details/6990421 题目大意: 初始时,有n个龙珠,编号从1到n,分别对应的放在编号从1到n的城市中. 现在又2种操作: T A B,表示把A球所在城市全部的龙珠全部转移到B城市.(第一次时,因为A球所在的城市只有一个球,所以只移动1个,如果有多个,则全部移动). Q A,表示查询A.要求得到的信息分别是:A现在所在的城市,A所在城市的龙珠数目,A转移到该城市移动的次数(如果没有移动就输出0)…
并查集的应用,用来查找被分割的区域个数. 即当两个节点值相同时说明已经为了一个圈,否则不可能,此时区域个数加1. #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; int n,m; int root[maxn]; int find(int a){ while(root[a]!=a){ a=root[a]; } return a; } int main(){ while…
Is It A Tree? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 19907    Accepted Submission(s): 4472 Problem Description A tree is a well-known data structure that is either empty (null, void, no…
判断两点:1.任何2点的父节点不能相同->否则会导致2点间有多条通路2.所有点只有1个集合 存在一个小坑,就是第一次输入 0 0 的时候,应该输出 Yes , 否则会WA MY AC Code : #include<stdio.h> #define NUM 100001 int root[NUM], visit[NUM], lu[NUM]; void init(){ ; i<=NUM; i++){ root[i]=i; visit[i]=; lu[i]=; } } int find…
Play on Words Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 5622    Accepted Submission(s): 1850 Problem Description Some of the secret doors contain a very interesting word puzzle. The team…
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/shengweisong/article/details/34099151 做了一上午,最终ac了 wa了一次主要是忘了还有环!.!   主要是运用并查集知识.又复习了一次!! 思路:输入之后找能不能成环,成环就不是,其次还要推断是不是有两个父节点,假设有两个父节点也不是.之后就找相关的祖先就好了. 还要注意:假设仅仅有一个节点,也是树.假设有两个或多个根节点也不是树:假设没有根节点也不是 链接pi…
并查集   英文:Disjoint Set,即“不相交集合” 将编号分别为1…N的N个对象划分为不相交集合, 在每个集合中,选择其中某个元素代表所在集合. 常见两种操作: n       合并两个集合 n       查找某元素属于哪个集合 并查集实现的程序代码: int set[MAXN],rank[MAXN]; //set[i]=k表示i的父节点是k,rank[]存储树的深度. int FindSet(int x) { if(set[x]!=x) set[x]=FindSet(set[x])…
Problem Description Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius wants to know how many tables he needs at least. You have to notice that not all the friends know each other, and all the friends do not want…