图论
文章平均质量分 66
神奇豆子
这个作者很懒,什么都没留下…
展开
-
HDU 5438 Ponds 拓扑+并查集
题意:给定n个点m条边,每个点都有权值,然后开始删除点,删点规则是这个点连接其他点的数量小于2,如果删除了某些点产生了其他可删除的点也将其删除。直到删除到不能为止。问最后剩余的联通块中,点的数量是奇数的联通块中的点的权值和。先对所有点进行拓扑排序,把如果拓扑排序的点都比较一下,这些点是被删除点。然后剩下了一些点,用这些点做并查集,在一个集合里的所有点就是一个联通块...#include#原创 2015-09-13 17:11:56 · 625 阅读 · 0 评论 -
POJ 1062 昂贵的聘礼 (dijkstra 最短路)
中文题面...不多说...能优惠的建边...按照等级枚举一下...求最小就好了..不多说..写这题的时候犯了几次SB错误...改了好久#include#include#include#include#include#include#include#includeusing namespace std;#define inf 1<<30int map[120][120],原创 2015-02-06 16:16:49 · 391 阅读 · 0 评论 -
POJ 1847 Tram(floyd 最短路)
题意:火车行驶过程有n条岔路(每次只能走一条),默认是第一条路..如果需要改路的话需要操作一次,问从a到b最少需要操作多少次....n个点 a,b是起点和终点,然后n行,第i行有k个点,代表第i个点可以走到这k个点,初始默认方向是第一个点的方向...其他的改道一次需要操作一次...按照操作次数当做边权求最短路即可..以前做过这个题...然后还是WA了好多次...是因为map[i][i]也需要置原创 2015-02-05 17:03:32 · 718 阅读 · 0 评论 -
HDU 1325&&POJ 1308 Is It A Tree? (并差集)
就是判断给出的是不是一棵树....比起小希的迷宫那个题目,多出来一个入度最多为1...大于1就不是树了...HDU的版本是输入两个负数结束而POJ就是和样例一样输入俩-1 结束..贴出来杭电的版本:#include#include#include#include#include#includeusing namespace std;int f[200000],m[2000原创 2015-02-06 16:52:20 · 323 阅读 · 0 评论 -
POJ 3169 Layout(差分约束 spfa)
大概题意就是n只牛站一排...第一只和第n只不想站的近..然后有些约束条件,ml组的(a,b,c)代表a牛和b牛之间最多差c距离..md组的(a,b,c)代表a和b之间至少差c...妥妥的差分约束..和上一道差分约束差不多...因为a#include#include#include#include#include#include#include#includeusing n原创 2015-02-06 14:37:35 · 363 阅读 · 0 评论 -
poj 2502 Subway(dijkstra 最短路)
大概题意是学生上学可以坐地铁可以步行,只要走到地铁站就立马能上车做地铁...先给出学生的家和学校的坐标...然后下面都是以-1 -1结尾的一串二维坐标,代表一条地铁线,不同地铁线不能建边,只能与相邻地铁站建边...地铁速度和步行速度给出,问到学校的最短时间是多少..以到达时间为边权建边...步行所有点可以建边,地铁的话一条地铁线有n个点只能建立n-1条边..相邻建边..然后计算一下家到学校的最原创 2015-02-05 15:55:40 · 452 阅读 · 0 评论 -
POJ 1511 Invitation Cards(spfa最短路)
大概题意:有n个点需要志愿者去发传单,然后有m条公交车路线..单向的,早上这些志愿去除了大本营1之外的所有点发传单,然后晚上再回来...问全部志愿者一来一回的最短路程是多少...(大概一个点只有一个志愿者吧...)类似于POJ 3268 那个牛聚会的那个题目...从1点出发在回来1点...那么1点出发到各点的最短路可以spfa一下...然后从各点回到1点可以反向建边,然后以1为起点spfa计算原创 2015-02-05 14:30:41 · 431 阅读 · 0 评论 -
POJ 2240 Arbitrage( floyd)
大概意思就是先给出n中货币的名字,然后给出m种汇率,A C B,代表1单位的A可以换C单位的B.问是否存在一种方法可以使得某种方法,使自身换到是自身汇率能大于1....字符串输入有点...麻烦?也不算难...像是POJ 1860的弱化版?floyd可以直接跑出来的样子...#include#include#include#include#include#includeusing n原创 2015-02-04 18:20:54 · 411 阅读 · 0 评论 -
POJ 3259 Wormholes 判断负环(spfa)
大概题意:农场里面有n个点m条边w个虫洞,m条边是双向边...a->b,b->a都是花费c分钟,虫洞的话是单向的,a点到b点时间会倒流c分钟就是-c分钟,然后问农场主是否能看到之前的自己...大概也是个环?就是从起点出发在回到起点之后最短路更新最后从0能否变为负数...能负数就是能看到之前自己...大概是个负环吧...老老实实的去看spfa判断负环去了....套了个模板...发现了一个原创 2015-02-04 16:49:18 · 466 阅读 · 0 评论 -
POJ 1860 Currency Exchange 动态规划?
昨天没写代码..不过真是倒霉,朋友聚会一起去外面,连了个wifi被盗号...怎么改盗号的都知道,最后去移动补办了张卡再找回就没事了...哎..郁闷这个题目前天就看到了...当时感觉就是找一个能增加的环,能判断环的大概是spfa?本来想学的但是出去了...然后抽空想了想,变过去在变回来...是否可以用动态规划?大概题意是给出n种金钱,m中汇率,开始的时候手里拿的是第pos类钱,有sum这么多原创 2015-02-04 15:58:22 · 387 阅读 · 0 评论 -
POJ 2253 Frogger(kuangbin带你飞 专题四:最短路)
大概意思就是两只青蛙要约会..有n个石头,第一只青蛙在第一个石头上,第二个青蛙在第二个石头上..可能还有一些其他石头,可以跳到其他石头,问第一只青蛙找到第二只青蛙的过程中跳最远的最短距离是多少...这道题一看..卧槽 这不是最小生成树变形么..只需要1和2连接了就好...然后找最大边就行了...果断去试试#include#include#include#include#inclu原创 2015-02-01 16:50:15 · 432 阅读 · 0 评论 -
POJ 3159 Candies(spfa最短路,差分约束)
题意:幼儿园俩小朋友不和..一个编号是1,一个编号是n,给出m个关系,就是A小朋友最多比B小朋友多C个糖果,问n最多比1多多少个糖果...n、m很大...开始我想着是求最大路,但是spfa没法求因为这题是有环的...后来一想,直接边权为c不就是最大了么..求一下最短路就行了吧...因为求最大路可能对于某些条件来说产生冲突...为了保证条件的合理性,只能选择最短路...接下来 TLE...nm范原创 2015-02-05 16:36:22 · 380 阅读 · 0 评论 -
UVA 10600 ACM Contest and Blackout (次小生成树)
题意没看...既然kuangbin巨巨是次小生成树的题目...然后计算了看了一下。输出次小生成树和最小生成树即可...用了kruskal,删除最小生成树的某一条边在做最小生成树..求得的最小的一个值就是次小生成树的值...#include#include#include#include#include#includeusing namespace std;struct nod原创 2015-02-08 16:03:32 · 371 阅读 · 0 评论 -
HDU 5441 Travel 并查集
题意:给定n个点m条边q次询问,每次询问都输入一个忍耐值,每条边都有一个让人抓狂的值,当忍耐值小于边权的话这条路那个人就不会走,而且当这个人到达一个新的点忍耐值会刷新,比如忍耐值为5,a-b 4,b-c 4,那么a-c是可以到达的,因为中间路途中没有大于忍耐值的....然后问有多少点对小于忍耐值,即有多少对(u,v),在这个忍耐值下是可以从u.(u,v),(v,u)是不同的...这个题窝离原创 2015-09-13 17:21:02 · 481 阅读 · 0 评论 -
POJ 1895 Cow Marathon&&POJ 2631 树的直径
1895这个题输入的方向是没用的,就是给出一棵树,求树的直径。2631 中n是1W,m没给出,是个单实例,注意边数是0要输出0.所谓树的直径就是一棵树中距离最远的两点的长度.先从任意一点开始bfs,找到距离其最远的点x,那么x就是直径的一个端点,从x出发bfs一发找到最远的距离就是树的直径。证明网上一大堆,善用baidu..#include#include#include原创 2015-08-10 15:10:00 · 329 阅读 · 0 评论 -
POJ 3164 Command Network(最小树形图模板)
大概题意:给出n个网络节点的个数和其坐标,然后m条单向边,服务器的位置是1,问要是所有的基站都受到信号,最小的花费是多少...有向图的最小生成树,是最小树形图,要用到朱刘算法去做...在学长博客扒到一份模板,果断用之,套上就AC了...不是难题...模板链接:点击打开链接#include#include#include#include#include#includeusin原创 2015-02-16 19:52:58 · 468 阅读 · 0 评论 -
hdu 1875 畅通工程再续(kuangbin带你飞 专题六:最小生成树)
写个最小生成树换换口味...比较水的一道题..任意姿势就过了..#include#include#include#include#include#includeusing namespace std;int f[102];int find(int x){ if(x!=f[x]) return f[x]=find(f[x]); return x;原创 2015-01-25 16:58:02 · 413 阅读 · 0 评论 -
HDU 1233 还是畅通工程 (kuangbin带你飞 专题六 最小生成树)
好久没写过图了...上去就错了好几次- -写的好搓..一直忘记边数时n*(n-1)/2...kruskal..#include#include#include#include#include#includeusing namespace std;struct node{ int u,v,s;};int cmp(node a,node b){ return a.原创 2015-01-23 16:43:40 · 379 阅读 · 0 评论 -
HDU 4009 Transfer water(不定根最小树形图)
题目大意:一个村庄被洪水摧毁了,整个村庄都要转移。但是山上没有泉水,每户家庭只能在自家挖一个水井或是修一个水渠从别的家庭引水。如果要修井,则修井费用和房子所在海拔高度有关,每米X元。如果从别人的家里引水,如果从高于自己家高度的人家里引水,费用为每米Y元。如果从低于自己家高度的人家里引水,每条要多花费Z元。现在给你这个村庄N个家庭房屋的坐标(a,b,c)和三种花费X,Y,Z。接着给你各家之间能单向修原创 2015-02-19 14:39:37 · 370 阅读 · 0 评论 -
Uva 10462 Is There A Second Way Left? (次小生成树)
大概题意是找次小生成树的...不过有三种情况...第一种是最小生成树都求不到 既不连通..,第二种是除最小生成树外没有其他生成树的..第三种是除最小生成树有多个生成树只输出最优情况...那么就是次小生成树咯...#include#include#include#include#include#includeusing namespace std;struct node{原创 2015-02-10 12:39:11 · 530 阅读 · 0 评论 -
HDU 2121 Ice_cream’s world II(不定根最小树形图)
大概题意是找出一个点,以这个点为根的最小树形图权值和最小,输出最小树形图的权值以及点的编号。不定根,所以我们要添加一个虚根...然后就是很多大牛说的方法了...不过我一直很纳闷,我枚举每一个点为根求最小树形图..然后找出最小,这个一直WA,不明白为啥不是TLE,难道是模板问题?但是我的虚根是1或者n+1都是没问题,看起来不像是只能处理固定点的..求路过的大神解释一下..#include原创 2015-02-19 12:45:01 · 394 阅读 · 0 评论 -
Uva 11183 Teen Girl Squad(最小树形图 模板)
没看题目,推算样例....觉得是,然后就套模板写了。因为题目是从0-n-1,但是模板是起始点是1...所以我吧所有点的编号都加1了...#include#include#include#include#include#includeusing namespace std;#define inf 1<<30struct node{ int u,v; double原创 2015-02-16 20:20:18 · 408 阅读 · 0 评论 -
POJ 2492 A Bug's Life(并差集应用)
大概题意是给出n个虫子,m个关系...a b代表a喜欢b,然后判断一下这里面有没有基佬存在...虽然可能是拉拉...不重要了...涉及到并差集的应用...合并的时候需要进行一个判断性别的操作...r[i]表示和根结点的性别是否有差别...0同性1 异性...合并的时候如果x和根结点的关系和y和根结点的关系确定之后...那么合并的两个根结点的关系也就明白了...可以自己计算一下...刚开始进原创 2015-02-06 17:50:36 · 356 阅读 · 0 评论 -
poj 2387 Til the Cows Come Home(kuangbin带你飞 专题四:最短路)
十分简单的模板题?幸亏我发现我博客里面有dijkstra的代码....#include#include#include#include#include#includeusing namespace std;#define inf 0x7fffffffint map[1111][1111];int n,m,dis[1111],used[1111];int dijkstra()原创 2015-02-01 16:02:07 · 461 阅读 · 0 评论 -
POJ 3660 Cow Contest 传递闭包
大概题意就是说有n只奶牛,每只都有一定的编程能力数值,是唯一的(奶牛好厉害....),现在给出m个奶牛之间比较的结果,A一定比B大..问有多少只奶牛的排名可以确定...这让我想到了离散数学的二元关系...毕竟离散学的差,这玩意不用这个也可以,只要求得有x个可以打败他的,y个被他打败的,x+y==n-1,那么排第几就可以确定了不是,本来想建个链啥的,但是想着毕竟人家放在最短路里,范围只有100,原创 2015-02-02 14:32:07 · 388 阅读 · 0 评论 -
ZOJ 1586&&FZU 1096 QS Network(kuangbin带你飞 专题六 最小生成树)
这个题...好水,不过多了一个顶点的权值,所以建立某条边的话费就是边的花费+;两个顶点的花费...这种各种找简单题做也不是办法...专题一还剩一道题...明天尽力给A掉...一直没看懂来着..好好努力...寒假眼看就剩一个月了 #include#include#include#include#include#includeusing namespace std;int n,m原创 2015-01-29 16:04:32 · 453 阅读 · 0 评论 -
POJ 1258 Agri-Net(kuangbin带你飞 专题六:最小生成树)
开始看了一下..题目说的最多80个字符让我以为是大数,没管试了试 AC了- -还是没看懂题意,不过就是求最小生成树的...题目给出了邻接矩阵..继续kruskal,不过是不是给定这种邻接矩阵的prim算法是不是好一点...#include#include#include#include#include#includeusing namespace std;struct node原创 2015-01-27 18:52:27 · 514 阅读 · 0 评论 -
POJ 1679 The Unique MST(kuangbin带你飞 专题六:最小生成树)
- -题目问的是最小生成树是否唯一..唯一输出最小生成树总权重,不唯一输出Not Unique...有大神说是判断次小生成树和最小生成树权值是否相等..相等就不唯一,当然这么高端的方法我是不会的,只能删除每一条最小生成树上的边找能否在求得一个最小生成树和这个一样...因为只有100个点..最多9900边...最9900次kruskal应该是没问题的吧... 吐槽一句:家里敲代码真是冻指头.原创 2015-01-26 17:37:49 · 438 阅读 · 0 评论 -
POJ 2421 HDOJ 1102 Constructing Roads(kuangbin带你飞 专题六:最小生成树)
题目给定了一张n*n的邻接矩阵描述的图...然后有m条边已经连接,求最小生成树....先把邻接矩阵转化为...嗯...结构体存储的形式,然后对m条已经连接的边先并差集的合并操作加在一起,并且统计已经完成了多少个点连接在一起的边...然后进行最小生成树...#include#include#include#include#include#includeusing namespac原创 2015-01-26 17:06:34 · 398 阅读 · 0 评论 -
POJ 2349&&ZOJ 1914 Arctic Network(kuangbin带你飞 专题六:最小生成树)
题意:有S个卫星设备,P个点,S个卫星设备可以联通S-1个点,然后 要求每两个点都能通过一定路径被联通...求达到要求需要的最小花费中最大的那条边最小生成树,然后S-1条边是已经连接的...为了花费最小,那么...求完最小生成树吧最大的几个边给占了,那么剩下的最大那边就是所求。题目范围竟然给了500..就这次没有删除重写,上一题范围100...导致一直RE/WA...郁闷..#incl原创 2015-01-27 19:25:12 · 429 阅读 · 0 评论 -
POJ 1287 Networking (kuangbin带你飞 专题六:最小生成树)
这个题目没具体看,看了样例就做了...RE了一次,不知道具体范围是多大,反正往大了开,因为卡了两道搜索,今天做的题就换成最小生成树,毕竟简单- -#include#include#include#include#include#includeusing namespace std;struct node{ int x,y,s;};int cmp(node a,nod原创 2015-01-26 16:44:06 · 465 阅读 · 0 评论 -
POJ 1251 HDU 1301 Jungle Roads(kuangbin带你飞 专题六:最小生成树)
POJ和HDOJ一样的题目..不过一样的代码占用的内存差别有些大...很简单的最小生成树....#include#include#include#include#include#includeusing namespace std;struct node{ int x,y,s;};int cmp(node a,node b){ return a.s<b.s原创 2015-01-26 16:32:06 · 378 阅读 · 0 评论 -
HDU 1528 Card Game Cheater
题目意思是给原创 2014-07-28 20:10:46 · 471 阅读 · 0 评论 -
趣写算法系列之--匈牙利算法
【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。-------等等,看得头大?那么请看下面的版本:通转载 2014-07-28 16:07:55 · 483 阅读 · 0 评论 -
HDU 1595 find the longest of the shortest
题目让求删除某一条边之后的原创 2014-07-28 15:01:45 · 381 阅读 · 0 评论 -
POJ 2236 Wireless Network(kuangbin带你飞 专题五:并差集)
这个题10S,提交上去跑了8秒多...卧槽...我写的还真是有点搓啊...不过不知道为啥交C++ CE了 说是sqrt的毛病...不懂..题目说是给定n个电脑坐标和一个最大通信距离d,大于d的不能连接在一起,所有电脑开始都是坏的,O是修复电脑,如果俩电脑都被修复且距离小于d就能联通,S是问连通性的...#include#include#include#include#include原创 2015-01-28 18:03:18 · 473 阅读 · 0 评论 -
HDU 1213 How Many Tables(kuangbin带你飞 专题五:并差集)
裸并差集,大意就是要请客什么的,认识的人做一桌,不认识不坐一起,A认识B,B认识C,C认识D这样也算一桌...问需要多少桌....最后找一下有多少个根节点也就是f[i]=i的#include#include#include#include#include#includeusing namespace std;int f[2000];int n,m;void inti(){原创 2015-01-28 17:32:10 · 397 阅读 · 0 评论 -
POJ 1797 Heavy Transportation(kuangbin带你飞 专题四:最短路)
大概题意:有n个城市,m条边,每个边都有最大承载量,就是边权,现在要从1点运送货物到n,求能运货的最大重量。最大运货量必定是运输路上的最小边。看完之后就感觉和上一题类似,直接用最小生成树去做,不过这次是最大生成树吧...只要把1-n联通了就结束,每次找最大值,答案就是连接的最后一个值。开始WA了三次,以为是写搓了或者思路错了..后来发现输出的是时候没有加冒号,因为我看到和上一题类似,直接用的上原创 2015-02-01 17:19:18 · 406 阅读 · 0 评论 -
POJ 3268 Silver Cow Party 最短路
题意:n只牛在第x只牛家聚会...然后每只牛都走最短路,问所有牛到聚会现场以及回家用时最长的是多少...有向图...最短路算法都是求单源最短路径...但是一来一回两次,可以先求一次以x为源点的,就是回家的路程,然后再把整个图转置一下,就是a->b是s变为b->a是s就行了...再求一次最短路即可..最后两个时间相加找最大值就好了..不得不说图论的inf还是不要开成int上限...调试了原创 2015-02-02 16:11:56 · 354 阅读 · 0 评论 -
POJ 1502 MPI Maelstrom 最短路
这种十分臭长的题目真是....简单来说,就是有n个电脑?反正就是传送信息的东西,从1发送,如果发送给某一台电脑,某一台电脑也可以像其他电脑发送信息,现在给出了半个邻接矩阵...没有全部是0那个对角线的..然后求所有电脑收到信息的最短时间...其实就是求从1到其他各点最短路径中的最大值....然后范围100,floyd走起...#include#include#include#includ原创 2015-02-02 15:01:56 · 306 阅读 · 0 评论