
数据结构——并查集
文章平均质量分 83
HARD_UNDERSTAND
Just try
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Codeforces 659E 找环+(并查集/dfs)
题目: http://codeforces.com/problemset/problem/659/E 题意: 给你一个图,现在要你给这个图里面的边定方向,使得入度为0的点最少。 分析: 对于一个连通块而言,如果里面存在一个环,那么必然所有点的入度都可以大于等于1 否则的话,就存在一个点的入度为0。并查集:#include <bits/stdc++.h>using namespace s原创 2016-03-31 23:45:25 · 338 阅读 · 0 评论 -
hdu 3018 欧拉路定理+并查集
题目:hdu 3018 题意: 有一些道路,每次只能走一遍,问最少几次走遍所有道路? 分析: 这题是经典问题:一笔画问题。解决这个问题,需要知道几个定理和定义: 1. 欧拉道路:能否从无向图中的一个节点出发走出一条道路,每条边恰好经过一次,这样的路线称为欧拉道路。 2. 如果一个图是联通的且最多只有两个奇度点,则一定存在欧拉道路。如果有两个奇度点,则必须从其中一个出发,回到另一个终止。如原创 2016-03-23 21:19:45 · 299 阅读 · 0 评论 -
UVa 10129 单词 (有向欧拉路+并查集)
题目: 输入n个单词,是否可以把这些单词排成一个序列,使得第一个字母和上一个单词的最后一个字母相同。仅包含小写字母例如(acm malform mouse)就可以。 分析: 这是一道判断欧拉路的题目,上篇对欧拉路写了点基本定义。对于这题,把首尾字母看做节点,单词看成是有向边,用并查集判断是否连通,然后再根据有向图的结论:最多只能有两个点的入读不等于出度,而且必须是其中一个点的出度比入度大一原创 2016-03-23 22:33:23 · 499 阅读 · 0 评论 -
hdu 5438 并查集
题目:hdu 5438 题意: 有一些池塘用管道连接着,但是主人没钱了,要清除一些与其他池塘相连数目少于2的池塘,包括一些独立的池塘。每个池塘都有一个价值,最后在删完一些池塘后求出有奇数个连通块的池塘的价值和。 分析: 记得是一道网络赛的题目。而且还记得我做的时候,用了deque,总是超时。又做了一下,好简单的题目。就是模拟一下删池塘的操作就好。先用并查集记录一下每个池塘所处的连通块,然后开原创 2016-03-23 23:41:39 · 294 阅读 · 0 评论 -
hdu 5631 并查集
题目:hdu 5631 题意: 有一个n个点的连通图有n+1条边,问有几种删边的方法可以保持连通。 分析: n个点的连通图,那么最多可以删去两条边,因为n<100,可以枚举删除的是哪两条边,然后判联通。#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<iostream>using原创 2016-03-24 00:22:18 · 319 阅读 · 0 评论 -
hdu 5652 并查集
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 给出一个n*m的图,1是山峰,0是平原,还有q个操作,可以把0变成1,问最少前几次操作可以使得图的上端和下端完全阻隔,就是被1隔开。 分析: 判断是否完全隔开,就是判断是否1可以从左到右全都连起来,那么可以增加两个点s和e,表示最左端个最右端,如果是1,那么将1的八方是1的点连接起来,原创 2016-03-28 15:24:34 · 356 阅读 · 0 评论 -
hdu 5883 (欧拉路,青岛网络赛)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5883 题意: n个湖泊,m个河流连着,要从一个湖泊出发,经过所有河流,没经过一个湖泊就有异或上ai,问异或和最大是多少?如果不能走完所有河流,输出Impossible。分析: 显然是欧拉路问题,如果能完成,那么肯定是欧拉路,先判断连通。如果连通并且所有点的度都是偶数,那么就可以构成欧拉回路。如果原创 2016-09-21 20:57:01 · 419 阅读 · 0 评论 -
并查集的初步学习
用一句话描述一下并查集:并查集是用树来表示集合,他把每一个连通分量看做一个集合,其中包含了连通分量中的所有点,其中一个连通分量中的点都有共同的父亲结点。 具体的构造: 1. 初始化,每个点的父节点指向自己。 2. 如果两个点有边,那么就在一个连通分量中,所以指向同一个父节点。 3. 最后所有点都会指向各自的父节点,父节点相同的在一个连通分量中。 基本代码就一行:int findfa(int原创 2016-03-23 15:37:17 · 264 阅读 · 0 评论 -
51nod 1307 绳子与重物 【二分/并查集】
题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1307题意:有N条绳子编号 0 至 N - 1,每条绳子后面栓了一个重物重量为Wi,绳子的最大负重为Ci。每条绳子或挂在别的绳子下或直接挂在钩子上(编号-1)。如果绳子下所有重物的重量大于绳子的最大负重就会断掉(等于不会断)。依次给出每条绳子的负重Ci、重物的重量Wi以原创 2017-03-22 16:41:37 · 570 阅读 · 0 评论