并查集
夜幕下的ACM之路
通往成功的路注定是孤独的,我不会放弃!!!!
展开
-
HDU1232畅通工程
一道简单的并查集题目。includeincludeincludeusing namespace std;int pre[1000]; int find(int x) { int r=x; while(pre[r]!=r) { r=pre[r]; } int i=x,j; while(i!=r) {原创 2016-01-13 10:44:24 · 326 阅读 · 0 评论 -
CSU 1541 There is No Alternative(最小生成树+枚举)
思路:最小生成树。记录最小生成树的边,再依次去掉每个最小生成树中的每一条边,重新建立最小生成树,如果所求的最小花费与一开始的最小花费不一样,那么这条边一定不可以去掉,下面大家看懂题的基本都懂了,下面附上AC代码。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int pre[505];struct原创 2016-04-23 19:59:13 · 431 阅读 · 0 评论 -
HDU 1878 欧拉回路
Problem Description 欧拉回路是指不令笔离开纸面,可画过图中每条边仅一次,且可以回到起点的一条回路。现给定一个图,问是否存在欧拉回路?Input 测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是节点数N ( 1 < N < 1000 )和边数M;随后的M行对应M条边,每行给出一对正整数,分别是该条边直接连通的两个节点的编号(节点从1到N编号)。当N为0时输入原创 2016-05-08 12:39:13 · 780 阅读 · 0 评论 -
HDU 1856 More is better(并查集路径压缩+剪枝优化+暴力枚举)
http://acm.hdu.edu.cn/showproblem.php?pid=1856 More is betterTime Limit: 5000/1000 MS (Java/Others) Memory Limit: 327680/102400 K (Java/Others) Total Submission(s): 23033 Accepted Submission(s)原创 2016-07-13 23:38:16 · 446 阅读 · 0 评论 -
HDU 3018 Ant Trip ( 并查集+欧拉回路 )
http://acm.hdu.edu.cn/showproblem.php?pid=3018 Problem Description Ant Country consist of N towns.There are M roads connecting the towns.Ant Tony,together with his friends,wants to go through every p原创 2016-07-14 14:23:30 · 363 阅读 · 0 评论 -
HDU 5326 Work(并查集变种)
http://acm.hdu.edu.cn/showproblem.php?pid=5326 WorkTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1543 Accepted Submission(s): 933Problem原创 2016-07-16 18:44:14 · 377 阅读 · 0 评论 -
指南 第三章 例题5 UVALive 3644 X-Plosives(并查集)
题目链接:http://7xjob4.com1.z0.glb.clouddn.com/eab170e979d9683005d958b058d6ce76思路:就是加入后成环的元素不可以被加入。下面是AC代码:#include<cstdio>const int maxn=100000+10;int pre[maxn];int findset(int x){ if(x==pre[x])原创 2016-08-24 20:56:46 · 286 阅读 · 0 评论 -
指南 第三章 例题6 UVALive 3027 Corporative Network(并查集的应用)
题目链接:http://7xjob4.com1.z0.glb.clouddn.com/8709392d143986024ba5de491366d376下面写下中文题意: 有n个结点,初始时每个结点的父结点都不存在。你的任务是执行一次I操作和E操作,格式如下: (1)I u v:把结点u的父结点设为v,距离为|u-v|除以1000的余数。输入保证执行指令前u没有父结点。 (2)E u:询问u到根原创 2016-08-30 18:13:18 · 368 阅读 · 0 评论 -
哈理工OJ 1351 欧拉路径(判断连通图+欧拉回路或者欧拉路径)
欧拉路径 Time Limit: 1000 MS Memory Limit: 32767 K Total Submit: 226(68 users) Total Accepted: 82(60 users) Rating: Special Judge: No Description 七桥问题Seven Bridges Problem 18世纪著名古典数学问题之一。在哥尼斯堡的原创 2016-08-23 12:26:31 · 1177 阅读 · 0 评论 -
POJ 1988 Cube Stacking(并查集+求距离+连通块中元素个数)
题目链接:http://poj.org/problem?id=1988 Cube Stacking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 24136 Accepted: 8470 Case Time Limit: 1000MS DescriptionFarmer John and Bet原创 2016-11-04 19:31:49 · 629 阅读 · 0 评论 -
哈理工OJ 2238—围巾的纠结(并查集判环)
围巾的纠结 Time Limit: 500 MS Memory Limit: 32768 K Total Submit: 177(76 users) Total Accepted: 75(65 users) Rating: Special Judge: No Description 小破想要织一条围巾,可是她并不擅长于织围巾。由于工作太忙,每天她都只能织一点。为了快速的织完围原创 2016-05-05 14:02:53 · 772 阅读 · 3 评论 -
HDU 5606 tree(并查集的应用)
Problem Description There is a tree(the tree is a connected graph which contains n points and n−1 edges),the points are labeled from 1 to n,which edge has a weight from 0 to 1,for every point i∈[1,n],原创 2016-04-30 15:23:35 · 494 阅读 · 0 评论 -
FZU 2087 统计树边(最小生成树)
Problem Description 在图论中,树:任意两个顶点间有且只有一条路径的图。生成树:包含了图中所有顶点的一种树。最小生成树:对于连通的带权图(连通网)G,其生成树也是带权的。生成树T各边的权值总和称为该树的权,权最小的生成树称为G的最小生成树(Minimum Spanning Tree)。最小生成树可简记为MST。但是,对于一个图而言,最小生成树并不是唯一的。现在,给你一个连通的有权原创 2016-04-13 21:58:19 · 389 阅读 · 0 评论 -
HDU 1325 Is It A Tree?(并查集或者树)
本题跟小希的迷宫基本完全一样。。所以在这里就写了一个树的代码来过这个题目,下面是AC代码#include<iostream>#include<cstdio>#include<cstring>using namespace std;int f[100005];int main(){ int a,b,flag,i,j; int t=1; while(1) {原创 2016-03-03 14:59:29 · 347 阅读 · 0 评论 -
CodeForces 25D - Roads not only in Berland(并查集题目)
本题为并查集题目,个人觉得本题的答案并不唯一 题目的大意为:为了方便沟通任一两地之间,所以删除一条路的时候沟通另外一条路(一天只能进行一次),并且让花费的天数尽可能的少,所以在这里就得用并查集对是否成环进行判断。对成环的路断开,然后在端点连接另外一条与上一个环没有交点的路线,渣渣可能说的不太详细,各大神结合代码和题目样例再进行思考吧,就说到这里,下面附上AC代码。这里写代码片#include<io原创 2016-02-19 11:23:48 · 460 阅读 · 1 评论 -
HDU 1213 How Many Tables(并查集)
本题为简单的并查集题目,两个函数即完事,一个是查找,另一个是合并。 本题的大致题意为:t代表共有t组测试数据。共有n个人,有m对人在一个桌子上,问最少需要多少桌子。下面附上渣渣的AC代码:#include<iostream>#include<cstdio>#include<cstring>#include<cmath>#include<algorithm>#include<vector>原创 2016-02-20 10:34:35 · 378 阅读 · 0 评论 -
FZU 2195 检查站点(并查集或者树)
Problem Description在山上一共有N个站点需要检查,检查员从山顶出发去各个站点进行检查,各个站点间有且仅有一条通路,检查员下山前往站点时比较轻松,而上山时却需要额外的时间,问最后检查员检查完所有站点时所需要的额外时间最少是多少。Input包含多组数据 每组数据输入第一行为一个整数N 表示站点个数(1<=N<=100000),接下去N-1 行 每行3个整数 x,y,z(1<=z<=10原创 2016-03-06 18:41:45 · 466 阅读 · 0 评论 -
POJ 2524 Ubiquitous Religions(简单的并查集题目)
本题为并查集的模板题,,,代码如下。#include<cstdio>#include<cstring>#include<iostream>using namespace std;int pre[50005];int find(int x){ if(pre[x]==-1)return x; else return find(pre[x]);}int join(int a,i原创 2016-02-23 14:58:15 · 1229 阅读 · 0 评论 -
POJ 2236 Wireless Network(并查集加判断)
本题的大致题意为:给出n个电脑,n对电脑,表示电脑直接相连。但现在所有的电脑都是坏掉的,所以要对其进行维修。如果字符是’O’,则代表维修某个点。如果字符为’S’,则测试某两点是不是联通。但是要注意的一点是在判断两点间是不是联通的前提条件是这两点的距离小于d。 下面给出AC代码。#include<cstdio>#include<cstring>#include<algorithm>using原创 2016-03-11 00:58:55 · 388 阅读 · 0 评论 -
HDU 1272 小希的迷宫(并查集)
先写上AC代码。回头再来进行解释。。。#include<stdio.h>#include<string.h>#include<iostream>#define maxn 100010using namespace std;int pre[maxn];int t[maxn];//把出现的数都存入这个数组 int q[maxn];//标记有没有出现过的数 int find(int x)//查原创 2016-02-28 20:24:27 · 269 阅读 · 0 评论 -
POJ 1611 The Suspects(并查集)
本题很简单,就是找跟0拥有同一个祖先的人的个数。 渣渣的AC代码如下#include<cstdio>#include<cstring>#include<iostream>using namespace std;#define maxn 30005int pre[maxn];int find(int x){ if(pre[x]==0) return x; else原创 2016-02-28 21:48:17 · 271 阅读 · 0 评论 -
POJ 2492 A Bug's Life(加权并查集)
本题的题意很简单,,大致跟大家解释一下:给出了几组已知在一起的虫子,问这些虫子里面有没有同性恋。解释一下样例:样例1:1和2在一起,2和3在一起,1和3在一起。所以在这三个人当中一定出现了一对人为同性恋。同理第二组样例并没有出现同性恋的情况。本题的解题过程中运用了加权并查集的知识。因为这里要用到加权并查集来判断是不是同性恋。 下面附上渣渣的AC代码。#include<cstdio>#includ原创 2016-02-29 12:32:48 · 488 阅读 · 0 评论 -
Codeforces Round #376 (Div. 2) C. Socks (并查集维护)
题目链接:http://codeforces.com/problemset/problem/731/C题目不算太难,就是用并查集维护关系,时间关系先写到这,有时间详细说一下。 下面是AC代码:#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;#define N 2原创 2016-10-20 07:52:49 · 310 阅读 · 0 评论