
★-----------图论-----------
文章平均质量分 70
yuhong_liu
这个作者很懒,什么都没留下…
展开
-
hdu5438 -ponds -水题
给你一堆点先进行一个操作,对 度数为1的点 全部删掉,然后得到剩下的n个联通块,每个联通块里面的点个数为奇数 则把点的权值之和加入ans 为偶数则忽略不计;方法是直接模拟,先用并查集把点分成n个联通块,然后对并查集的 根排序,得到各个块对每个块处理, 如果块中的点 度数为1 加入队列, 顺便统计联通块的sum值 和点的个数值在队列里面 不断取出度数为1的点tmp,从sum和点个数n原创 2015-09-14 14:03:40 · 589 阅读 · 0 评论 -
POJ-2771-Guardian of Decency-求二分图最大独立集(匈牙利算法)
http://poj.org/problem?id=2771题意:老师带n个同学去旅游,尽可能不让他们发生恋爱关系,满足以下条件之一的人就不会发生恋爱关系(大致):1 身高差超过40cm 2同性3音乐爱好不同4运动喜好相同 (注意,真的是相同、、)求得尽可能多的可以带去旅游的人数(性别不同嘛。。必然是一个二分图) 建立成的二分图中,每个人是一原创 2016-03-11 01:08:44 · 633 阅读 · 0 评论 -
POJ-1325-Machine Schedule-最小点覆盖(二分图-匈牙利算法)
题意:有两台机器,有多个任务,每个任务都可在这两台机器上运行,不过不同的模式需要重启电脑,很浪费时间,现在要找出最好的调度方式,减少重启次数。把机器A看作一个点集,机器B一个点集,每个任务就是在两个点集的某个模式之间连一条边,完成所有任务就是所有边都被点覆盖,最小点覆盖便是 最少重启次数完成任务,最小点覆盖=最大匹配数,匈牙利算法。这里一开始从模式0开始,也就是遇到需要模式原创 2016-03-11 11:36:26 · 865 阅读 · 0 评论 -
POJ-2060-Taxi Cab Scheme-最小路径覆盖
http://poj.org/problem?id=2060题意:有n个任务:开始时间、起始地点、终止地点。每个地点可以派出一辆出租车,如果出租车完成任务i后还可以到达任务j,那么它可以继续执行任务j。现在问最少可以排除多少辆出租车?乍一看,像是最小路径的问题,关键有个地方是,即使任务A的终点和任务B的起点相同,也不代表路径A-B合法,还要判断:任务i的开始时间+任务i的完原创 2016-03-11 17:36:01 · 431 阅读 · 0 评论 -
POJ-1422-Air Raid-求最小路径覆盖(匈牙利算法)
http://poj.org/problem?id=1422题意: 一个镇里所有的路都是单向路且不会组成回路。 派一些伞兵去那个镇里,要到达所有的路口,有一些或者没有伞兵可以不去那些路口,只要其他人能完成这个任务。每个在一个路口着陆了的伞兵可以沿着街去到其他路口。我们的任务是求出去执行任务的伞兵最少可以是多少个。显然,每个伞兵,可以走一条路径(可由原创 2016-03-11 01:47:19 · 426 阅读 · 0 评论 -
UVALive - 3902 Network 无根树转为有跟树+搜索+贪心
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=16451题目大意:n台机器连成一个树状网络,其中叶节点是客户端,其他节点是服务器。现在有一台服务器在节点s,服务器能传播的信号的距离为k,因为有的用户距离服务器的距离大于k,所以必须添加服务器。问最少要添加几个服务器,才能使每个客户端都收到信号首先以S为根节原创 2016-04-26 16:27:06 · 502 阅读 · 0 评论 -
ZOJ 3781-缩点+bfs模拟
http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3781题意:在n*m矩阵的图定义连通区域为x值或y值相同且颜色相同的连通,连通具有传递性每次可以把一个连通区域颜色反转(O变X,X变O)问把所有块的颜色变为X最小的步数思路:乍一看,翻开随便一个点会影响一大片联通块翻原创 2016-04-16 01:15:33 · 1159 阅读 · 0 评论 -
HDU 4725-J - The Shortest Path in Nya Graph-增点建图-层次网络-最短路
与hdu5521类似的层次网络最短路问题http://acm.hdu.edu.cn/showproblem.php?pid=4725题意是给 n个点,m个边,Cm条边u,v,w,w是边权 除此之外给你一个个 layer[i],表示点i属于第 layer[i]层! 关于层的性质有两个 【如果相邻两层都存在节点,则x层任意节点可以与x+1层任意节点互通,代价为C】当原创 2016-04-19 01:16:51 · 633 阅读 · 0 评论 -
hdu-5521-Meeting- 最短路-增点建图
http://acm.hdu.edu.cn/showproblem.php?pid=5521题目意思就是给你一个图,n个城市,求 1和n相遇的最短距离,显然就是分别以1和n出发求一次最短路,答案就是 min【max( dis1[i],disn[i] )】...但是本题给的图很特别,直接给出m个集合,每个集合里有k个点,集合内任意两点之间的边权是t。显然不能暴力n^2建图,否则极原创 2016-04-19 00:01:25 · 438 阅读 · 0 评论 -
hdu -3926-简单判同构并查集
http://acm.hdu.edu.cn/showproblem.php?pid=3926简要判断图的同构,由于点度数不超过2只可能形成环、链、点,因此用并查集合并与记录判断 是否为环,就看加入的边,时候之前已经联通,如果是,则说明存在环最后判断同构的时候,只需要取每个联通分量的 根节点信息比较【节点数,环还是链...】 似乎后台没这组数据18 7原创 2016-07-12 14:08:11 · 346 阅读 · 0 评论 -
hdu-2480-Steal the Treasure-贪心+缩点
http://acm.hdu.edu.cn/showproblem.php?pid=2480边排序,贪心选择大的,遇到单向边直接选并标记起点x,遇到双向边,且起点可以任选,则缩点,若起点唯一,则按照单向边处理,标记起点#include #include #include #include #include #include #include #includ原创 2016-07-18 10:40:41 · 477 阅读 · 0 评论 -
cf#369-D - Directed Roads-dfs找环
http://codeforces.com/contest/711/problem/D给一个图,n点n边, 问有多少个边集 翻转其方向 后使得整个图不存在任一个有向环。那么直接dfs找出一个联通分量,然后根据深度判一下环的长度为huan,该联通分量点数为tol那么答案就是 乘上 (2^huan)-2 + 2^tol , 环的情况减二是因为 去掉两个怎原创 2016-08-30 17:48:53 · 424 阅读 · 0 评论 -
hiho一下 第110周 floyd + 贪心 + 倍增
题目大意给定一张N个点的完全图,可以从任何一个点出发,同一个点可以经过多次。询问总路径长度不超过M的情况下,最多能够经过多少个点。 输入是 n和m以及一个n*n的矩阵,mp[i][j]表示点i到点j的距离 把初始矩阵的点理解为从点i出发,经过一条边后,最后停在点j的距离.我们可以发现,这个矩阵A和B相乘之后,得到的矩阵的mp[i][j]的意义为从i出发 ,经过A+B条边原创 2016-11-25 22:12:01 · 519 阅读 · 0 评论 -
二分图小结
二分图 ,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B)通俗点说就是,把一个图能分成左边一个顶点集,右边一个顶点集合,并且集合内所有点之间无直接相连的边,所有的边都只存在集合外部连通两个集合;大概是这个样子:匹配:就是在集合U和V之间拉k条边,只要这k条边中任意两条的2个端点都不同 ,就是一个匹配最大匹配:原创 2016-03-11 02:16:22 · 440 阅读 · 0 评论 -
UVA11080- Place the Guards-(二分图染色)-dfs
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28175给一个图,n个点,m个边要用黑白两种点间或把整个图覆盖最少的黑点/白点个数,如果不能输出-1【 //单独的节点在本题题意下需要染色】直接dfs跑一遍二分图染色,注意,可能存在多个联通块,也就是跑多次dfs 。每次跑完一个联通块 累加一下原创 2016-04-01 00:47:35 · 647 阅读 · 0 评论 -
POJ-2226-Muddy Fields-二分图-最小点覆盖
http://poj.org/problem?id=2226题意就是 给你一个r*c的矩阵。里面有一些*和.,要求用最少的操作去掉所有的*每次的操作就是去掉一行连续的*,或者一列(长度任意)。。但是这个题有个不一样的地方是, 每次操作不能碰到 点. 因此就是说不能粗暴的把整行去掉之前的POJ3041就可以以点为边,对于点(x,y),只要对行x或着列y进行删除操作原创 2016-03-18 12:06:49 · 508 阅读 · 0 评论 -
cf#306-D - Regular Bridge- 构造 k度无向图
题意:给出一个k,表示一个无向图的每个节点的度数为k,并且在无向图中有一条边如果去掉之后会把这个无向图分成两个部分,也就是桥,要求输出任意合法的图我们可以这样考虑,把图分成对称的两部分,两部分之间满足k度,最后两部分由一条边连接,这条边就可以称之为桥,因为只要去掉,整个图就变成2个联通块了。思路:我们先对 对称的左边部分考虑:先假设有k个点,点k为桥的端点,原创 2015-10-09 17:54:55 · 932 阅读 · 0 评论 -
POJ-1330-只询问一次的LCA
求两个点的最近公共祖先直接反向建图,2个dfs完事。。当然如果是多个询问 得用rmq/tarjan了。。水只。。。#include #include #include #include #include #include #include #include #include #include using namespace std;int n原创 2015-11-27 17:27:25 · 374 阅读 · 0 评论 -
POJ 3259-Wormholes-SPFA判负环
题目问从1开始 通过一些正权边和负权边,权值为走这条边的耗时,问能否在负数时间内回到原点,也就是判断是否存在负环啦,spfa+邻接表的方式判负环,因为用了邻接表,重边可以不特别处理#include #include #include #include #include #include #include #inclu原创 2015-11-28 21:45:35 · 406 阅读 · 0 评论 -
POJ-1860-Currency Exchange-寻找正权环-spfa
多种货币(看作点),可以通过不同的银行兑换处 相互兑换(有向边),有一定汇率(看作边)。A到B的汇率是29.75,手续费是0.39手持A货币100,交换后得到B货币=(100-0.39)*29.75问:给出货币种树,所有的兑换点,初始货币种类及其数量,经过交换,最终是否能使得初始化比金额增加。思路:显然货币交换是可以多次的,我们只需要找到一个正权环,就可以把初始资本原创 2016-01-20 02:38:58 · 541 阅读 · 0 评论 -
POJ-2253 Frogger-寻找最长边-bellman
给出一堆在坐标轴上的点,求起点到终点的一条合法路径中,最长的边,作为一个ans,求所有ans中 最小的一个ans思路:直接从起点开始,去更新所有到达所有点的ans值,直到无法更新,即队列为空dis[2]存的便是起点到终点的 最小的一个ans值 数据太水? 32ms#include #include #include #include #include #inc原创 2016-01-20 03:32:01 · 475 阅读 · 0 评论 -
POJ-2240-Arbitrage-spfa-寻找正权环
2240此题与 1860 一样,求能否通过货币兑换率差挣钱不同之处在于 1860 给定了某种初始货币,如果要保证挣钱的话,需要保证存在正权环且【环上的点能回到源点】,因为1860给每一对点都给了往返的边,所以必然存在回到源点的路。因而只需要找正权环而本题,没给出起点,也就是不保证正权环上的点能到回起点、、、于是加了个dfs判联通....后来发现正因为没给起点,只需找原创 2016-01-20 04:29:42 · 592 阅读 · 0 评论 -
poj-3026 -Borg Maze -bfs+prim(MST)
http://poj.org/problem?id=3026 题目给出一个最外面被#包围的图,求S到达所有A点,所需要走过的步数。注意S会分身,A最多有100个,那么S可以分成100分,其实可以把S也看成A,求 使得图中所有的A联通在一起 的一个 最小生成树,先用bfs求出 他们之间的 边权值,然后跑一遍prim就OK。。。数据较小。。就都用暴力算法了原创 2016-01-20 13:41:25 · 416 阅读 · 0 评论 -
POJ-1789-Truck History-最小生成树
http://poj.org/problem?id=1789傻逼题犯了傻逼错误。。。。给你n个字符串每2个字符串之间的 不同字母个数表示两个字符串的dis距离把字符串看作点,距离看作边权,求这个最小生成树的权值和把mini写成minn 了wa了几次。。。。#include #include #include #include #includ原创 2016-01-20 15:51:32 · 681 阅读 · 0 评论 -
cf#33-B - String Problem-反向建图+最短路
给出字符串s,t;n个字母替换关系 x,y,w题意:求使得给出两个字符串完全一致的代价,【可根据一个有向图替换字符,并消耗相应代价】字母表比较小,预处理所有方案,(i-j替换成一致的)最优方案是反向建图的最短路,n^2 * n^2 (可做到n^3,n=26就没必要了) ,然后O(n)遍历即可反向建图的意思: 题目要求x,y的最短一致代价,即找出一条x联通y的最短路,但是由原创 2016-01-30 00:53:56 · 980 阅读 · 0 评论 -
cf#ecr7- E - Ants in Leaves-暴力+贪心
http://codeforces.com/contest/622/problem/E题意:给出一棵树,n个节点,根为1,每个叶子上有一只蚂蚁,蚂蚁同时往根爬,每步移动1单位时间,除了节点1,别的节点每一时间只能存在1只蚂蚁。 求所有蚂蚁到根节点的最短时间。贪心,考虑每个子树,求子树上所有蚂蚁到根的最长时间。对每个子树,dfs处理出每个叶子节点的深度,并存起来。原创 2016-02-14 17:47:44 · 594 阅读 · 0 评论 -
POJ-2594-Treasure Exploration-(路径相交的最小路径覆盖+闭包传递)
http://poj.org/problem?id=2594题意:派机器人去火星寻宝,给出一个无环的有向图,机器人可以降落在任何一个点上,再沿着路去其他点探索,我们的任务是计算至少派多少机器人就可以访问到所有的点。不同的机器人可以经过同一个点。显然是最小路径覆盖问题,一般的最小路径覆盖的话,路径没没有重叠的,也就是每个点只经过一次,对于这种可以路径重叠的情况,我们需要做一下原创 2016-03-12 17:03:51 · 420 阅读 · 0 评论 -
POJ-2631-Roads in the North-树的直径(最长路)
http://poj.org/problem?id=2631裸的求树直径, 两次bfs这种方法是利用了树的直径的一个性质:距某个点最远的叶子节点一定是树的某一条直径的端点。这样就可以首先任取一个点,bfs求出离其最远的点,在用同样的方法求出离这个叶子节点最远的点,此时两点间的距离就是树的直径。#include #include #include #include原创 2016-02-02 13:38:13 · 479 阅读 · 0 评论 -
POJ-2989-All Friends 极大团算法 Bron-Kerbosch及其改进
http://poj.org/problem?id=2989给n个点m条边,求极大团的数量。极大团的定义就是:对于一个团里,所有人互为朋友,且团外的任何一个人,都不会和团里的所有人同时是朋友。BK算法的伪代码 BronKerbosch(All, Some, None): if Some and None are both empty:原创 2017-03-13 21:19:56 · 1813 阅读 · 0 评论