图论
_binbin
我是“三好学生”:好吃,好玩,好睡。
展开
-
HDU 4635 Strongly connected(图论)
如果有孤立的点,则把其他的点连成完全图。然后从该点向每一个点连一条有向边。总共(n-1)*(n-1) 条。如果没有孤立的点,尽量找点数最小的强连通,且这个强连通只有向外的有向边,或者只有向里的有向边。把这些点练成完全图。其他的点也连成完全图。最后从这些点,分别向其他的点连有向边。设两个完全图的点数为n,m则总边数为n*(n-1)+m*(m-1);从一个完全图,指向另一个完全图的边数(n*m);原创 2013-08-01 19:02:02 · 917 阅读 · 0 评论 -
LightOJ 1074 - Extended Traffic (SPFA负环)
题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市I到另一个城市J的时间为:(aJ-aI)^3,存在负环。问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间。。思路:用spfa找出的所有的负环,把所有负环能到的点都标记一下。。#include #include #include #include #include #incl原创 2012-11-06 11:04:45 · 1663 阅读 · 0 评论 -
lightOJ 1251 - Forming the Council(2-sat)
题意:n个人参与投票,被选的人有m个,每一个人都有两个选择:让某个人当选,让某个人下台。。问是否存在一个方式,能够每一个选民的至少一个选择。思路:如果一个人的第一个选择没有被满足,则另一个选择一定要被满足、#include #include #include #include #include #include #include using namespace std原创 2012-11-04 18:28:37 · 760 阅读 · 0 评论 -
POJ 2699 The Maximum Number of Strong Kings(最大流)
题意:n个人比赛,得分最高的算赢了,打败了所有比自己高的分的人也算赢了,问最多有多少人赢了。。网络流:人数很少。把每一场比赛都看作一个点。建建图;枚举答案就行了。恶心的输入啊。。输入的每一行后面还可能有空格。再codeblocks中直接把后面的空格去掉了。。tle,wa了n多次。。。#include #include #include #include #inclu原创 2012-11-03 16:50:53 · 959 阅读 · 0 评论 -
POJ 1149 PIGS(最大流)
题意:n个人买猪,有m个猪圈,每个人可以买多个猪圈的k头猪,买完之后这些猪圈的猪就可以走动了,否则每一个猪圈的猪只能呆在各自的猪圈里。问最多可以卖出几头猪。思路:http://imlazy.ycool.com/post.2059102.html第一道网络流,拿来验证yy的模版。。#include #include #include #include #include原创 2012-09-25 19:41:55 · 544 阅读 · 0 评论 -
ZOJ 3656 Bit Magic(2-sat)
题意: 给你b[][]的值,返回来推出a[]的值是否存在。。。思路:2-sat ,看到别人说用2-sat 我才去做的,到比赛的时候不一定能想出用2-sat,而且,每一个整数32位的二进制数,要一位一位考虑,才不会mle;看别人的博客才做出来的。纠结啊。。比赛咋办。。#include #include #include #include #include #include原创 2012-10-15 14:26:01 · 812 阅读 · 0 评论 -
POJ 3683 Priest John's Busiest Day(2-SAT)
题意:问牧师能否参加每一个婚礼的典礼,典礼只能在婚礼的开始或者结束的时候举行。给出婚礼的时间段,。在婚礼的开始或者结束,2选1 ,可以用2-sat。输出婚礼的时间很麻烦,可别人的报告看了好久才勉强看懂。。。。#include #include #include #include #include #include #include using namespac原创 2012-09-19 22:15:18 · 564 阅读 · 0 评论 -
HDU 3622 Bomb Game(2-SAT)
题意:有n对点,每对点只能选择一个点画圈,要求圈不相交,,问圈的最大半径。。思路。浮点数计算很花时间,用半径的平方,进行计算。一般的2-sat #include #include #include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;c原创 2012-09-18 21:38:28 · 731 阅读 · 0 评论 -
POJ 2455 Secret Milking Machine (最大流)
题意:找出从1点到第n点的T条路,求这些路的最长边的最小值。#include #include #include #include #include #include #include using namespace std;const int N = 209<<1;const int M = 40009<<1;const int INF = 0x3f3f3f3f;str原创 2012-10-06 08:08:10 · 496 阅读 · 0 评论 -
HDU 3062 Party (2-SAT)
#include #include #include #include #include #include #include using namespace std;const int N=2009;struct LT{ int to,nex;} L[N*N];int F[N],cnt;void add(int f,int t){ L[cnt].nex原创 2012-09-15 16:49:22 · 460 阅读 · 0 评论 -
POJ 1201 Intervals (差分约束)
题意:n个区间。每个区间[ai,bi] 间有至少有ci 个数。问这些区间至少有多少个数。。#include #include #include #include #include #include #include using namespace std;const int N = 50009;const int M = N<<2;int dist[N];struct L原创 2012-10-05 20:56:44 · 460 阅读 · 0 评论 -
POJ 3207 Ikki's Story IV - Panda's Trick(2-SAT)
题意:有一个圈,圈上有n个点,分别为0到(n-1),现在用线把某些点连起来,且线不相交。问能否实现。思路:线可以在圈的内部or圈的外部,设在圈的内部为i ,圈的外部为i+n,则,当在圈的同侧连接两条线时,如果会相交,则: i -> -j j -> -i -i -> j -j -> i判断两线是否相交: 如果一条线的一个端点值在另一条线的两个端点值之间,而另一端点不在他们之间,则相原创 2012-09-14 15:16:24 · 826 阅读 · 0 评论 -
POJ 2296 Map Labeler(2-sat)
题意:在一个地图上贴正方形标签,标签不能重合,地图上点的位置在标签的下边中点,或者上边中点,求标签的最大边长。思路:一个标签可以在点的上方或者下方。设在上方的为i+n,下方为i。。二分边长,设边长为L 则:当两点的x差值小于L时: 1.两个y值一样时,一个标签在上方一个标签在下方,i -> -j j -> -I -i -> j -j -> i2.i点的y值大于j时原创 2012-09-14 09:39:38 · 656 阅读 · 0 评论 -
LightOJ 1099 - Not the Best(Dijkstra次短路)
题意:求从1到n的次短路。dijkstra,写了好久啊,太水了。。#include #include #include #include #include #include #include using namespace std;const int INF = 0x3f3f3f3f;const int N = 5009;const int M = 100009;in原创 2012-11-07 12:22:09 · 1200 阅读 · 0 评论 -
LightOJ 1221 - Travel Company(SPFA判负环)
比较简单:#include #include #include #include #include #include #include using namespace std;const int M = 9999;const int N = 109;const int INF = 0x3f3f3f3f;struct LT{ int to,nex,val;}L[M原创 2012-11-06 22:54:43 · 1070 阅读 · 1 评论 -
LightOJ 1108 - Instant View of Big Bang(SPFA)
题意:跟上题一样,这题求哪些点可以进入负环。思路:突然间想到把每一条边的方向改变一下就跟上题一模一样了,“看我,多聪明”。。#include #include #include #include #include #include #include using namespace std;const int N = 1009;const int M = 2009;原创 2012-11-06 16:42:44 · 970 阅读 · 0 评论 -
HDU 4370 0 or 1 (SPFA)
看了http://www.cnblogs.com/kuangbin 的博客才有思路的、#include #include #include #include #include #include #include #include #define LL long long#define DB doubleusing namespace std;const int N =原创 2013-05-31 16:07:59 · 724 阅读 · 0 评论 -
LIGHTOJ 1256 - Word Puzzle(欧拉路)
犯了一个超级傻的错。尾部多输出了一个空格。p==-1 时也会输出空格,害我调试了好久好久。。。。#include #include #include #include #include #include #include #include #define LL long long#define DB doubleusing namespace std;const int原创 2013-05-03 16:45:34 · 878 阅读 · 0 评论 -
lightoj 1250 - Village Postman
找欧拉回路;开始看错题了,,,笨啊。#include #include #include #include #include #include #include #include #define LL long long#define DB doubleusing namespace std;const int N = 209;const int M = 1009;原创 2013-05-02 21:35:14 · 817 阅读 · 0 评论 -
URAL1742 Team building
题意:把强连通缩点,然后求有几个点。再求有一个叶子。这个图不一定联通。 英语4级低空飘过的人,看不懂题啊。。。#include #include #include #include #include #include #include #include #include #include using namespace std;const int N =原创 2013-03-17 10:46:54 · 590 阅读 · 0 评论 -
ural 1400. Cellular Characters
题意:有n个字符,第一列有m个,类推下去。选择一个光标位置,使得他到每一个字符的期望最小。第一行不能向上走,最下行不能向下走,其他跟诺基亚的类似。求最小期望。并输出最短路。#include #include #include #include #include #include #include #include using namespace std;const in原创 2013-03-09 11:56:40 · 886 阅读 · 0 评论 -
HDU 4479 Shortest path(最短路)
题意:求最短路,要求每一次走的路都比上一次的长。思路:把所有边排序,然后从短到长的顺序找最短路,相同长度的同时考虑。。机组数据:35 51 2 12 3 23 4 31 4 44 5 45 51 2 22 3 33 4 41 4 54 5 55 51 2 22 3 33 4 41 4 54 5 6#in原创 2012-12-14 17:48:26 · 1107 阅读 · 0 评论 -
LightOJ 1123 - Trail Maintenance (最小生成树)
题意:有n个点,依次给出m条边。每一次判断能否形成最小生成树,输出最小生成树。最近没有写代码,脑子短路了。。#include #include #include #include #include #include #include #include using namespace std;const int N = 209;struct LINE{ in原创 2012-12-12 17:10:43 · 1404 阅读 · 2 评论 -
Lightoj 1063 - Ant Hills
题意:求最小割为1的割点的数量。第一次做这样的题 ,不会做啊,,做了这道题我才发现我连最基本的图论都不会。这水平,太水了。#include #include #include #include #include #include #include using namespace std;const int N = 10009;const int M = 20009;原创 2012-11-25 21:08:12 · 678 阅读 · 0 评论 -
LightOJ 1300 - Odd Personality
题意:有多少个点可以走n次之后回到该点 ,n为奇数,这里不是所有点都联通的,#include #include #include #include #include #include #include #include using namespace std;const int N = 10009;const int M = 40009;struct LT{原创 2012-12-02 18:52:56 · 861 阅读 · 0 评论 -
HDU 4444 Walk(2012金华,搜索)
题意:问最少拐多少次弯可以从起点到终点。。好难啊 ,可以从边界上经过的。第一次做这样的题。。。。思路:把一个点拆成4个点。看每一个点的所有走法。第一次画图,莫笑#include #include #include #include #include #include #include #include using namespace std;c原创 2012-11-14 17:57:47 · 1878 阅读 · 0 评论 -
LightOJ 1407 - Explosion(2sat+枚举)
题意: 参加一个会议:其中的某些人参加不参加,有如下关系:1 x y 表示两人两个人至少去一个;2 x y 表示x 不去,y也不能去>>>>>>>>>>>>>可以推出 y去了x也肯定去了。。。错了n次, 无语了。3 x y 表示两个人至少一个不去4 x y 表示两个人只能去一个,不能少1 x y z 三个人至少去一个2 x y z 三个人至少一个不去原创 2012-11-27 12:55:58 · 1019 阅读 · 0 评论 -
LightOJ 1026 - Critical Links (tarjan 找桥)
题意:找出所有的桥,并输出。水题,中午肚子痛,查不出错了,晚上一看,tarjan写错了!!!!#include #include #include #include #include #include #include using namespace std;const int N = 10009;const int M = 100009;struct LT{原创 2012-11-09 22:46:48 · 1071 阅读 · 0 评论 -
POJ 2391 Ombrophobic Bovines(最大流)
题意:有n个牛棚,现在每个牛棚都有ai牛,下雨的时候每一个牛棚可以放bi只牛才不会淋湿。把牛放入另一个牛棚需要一些时间。。问最短要多少时间。能把牛放到其他的牛盆里,牛才不会被淋湿。。思路:网络流,开始的时候建了一个图,后来发现错了 ,无语。。。又是看别人的报告才过的,,还有自己到自己的路程应该是0,wa了一次,更纠结了。。数据:http://ace.delos.com/MAR05_4.ht原创 2012-10-01 20:53:24 · 920 阅读 · 1 评论 -
POJ 2749 Building roads (2-sat)
题意:有一条线段,和n个点,把n个点连接在线段的端点处。。有a对点要连接在同一个点上,有b对点要连接在不同的点上。要使任意两点的最长距离最短。求最短距离思路:假设有2*n个点,i点表示连接在start端,i+n表示连接在end端,则连接同一点的点对 i , j 有:i->j j->i i+n->j+n j+n->i+n 连在不同一点的点对:i,j 有: i->j+n j原创 2012-09-12 17:06:02 · 377 阅读 · 0 评论 -
POJ 2186Popular Cows(Tarjan)
题意:问有多少只牛被所有的牛膜拜;A膜拜B,B膜拜C ,则A膜拜C ,用Tarjan 缩点,求一个出度为0的点。包含原来点的个数。简单题。#include #include #include #include #include #include #include using namespace std;const int N = 10009;const int M = 5原创 2012-08-16 22:03:46 · 415 阅读 · 0 评论 -
POJ 1236Network of Schools(tarjan)
题意:在单项的网络传输中,把软件发给所有的人。问最少要多少个软件才能所有人都得到软件。问增加多少条边,可以使得给任意一个人一个软件,就可以传播到所有的人。#include #include #include #include #include #include #include using namespace std;const int N = 109;const int M原创 2012-08-16 10:40:33 · 396 阅读 · 0 评论 -
poj 3522 Slim Span
题意:找一颗生成树,使最大最小边只差最小。输出差值。#include #include #include #include #include #include using namespace std;const int N = 109;const int M = 10009;const int INF = 0x3f3f3f3f;int n,m;struct node{原创 2012-08-15 20:57:21 · 401 阅读 · 0 评论 -
POJ 2728 (Desert King)
题意:最有比例生成树最近做了好几道这样的二分答案求解的题,#include #include #include #include #include #include using namespace std;const int N = 1009;const int INF = 0x3f3f3f3f;double map[N][N];int re[N][3];dou原创 2012-08-15 18:58:28 · 665 阅读 · 0 评论 -
HDU 4360 As long as Binbin loves Sangsang(最短路)
题意:问从1到n的最短路,所走的路必须是LOVELOVE,而且是完整的LOVE。就是道最短路的题。这题比较坑,让人无语。提供测试数据吧;21 01 41 1 9 L1 1 5 O1 1 2 V1 1 3 E答案:Binbin you disappoint Sangsang again, damn it!Cute Sangsang, Binbin原创 2012-08-14 18:13:44 · 802 阅读 · 0 评论 -
HDU 2413 POJ 3343 Against Mammoths(二分图匹配)
题意:星球大战 ,地球人有n个星球,外星人有m个星球,每一个星球都初始的飞机数,和生产飞机的能力。问地球人要多长时间才能打败外星人。。1,一个地球人的星球只能打一个外星人的星球,一个外星人的星球只能被一个地球人的星球攻击,因此可以用二分图匹配。(开始时没有看清这句,以为是线性规划的问题,老感觉不对劲,看了别人用二分图匹配之后,,,,)2,二分时间。时间的最大值,我也不会算,() 用INF=原创 2012-08-13 17:43:01 · 1001 阅读 · 0 评论 -
CSU 1092: Barricade(最短路)
题意:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1092把每一个点的出度-1作为该点的到该点的边的权值。到终点的边的权值是0。然后就是求最短路了。Dijkstra 可以过。#include #include #include #include #include #include using namespace std;原创 2012-08-12 17:19:09 · 681 阅读 · 0 评论 -
HDU 2416 POJ 3346 Treasure of the Chimp Island(最短路)
题意:问能否从城外进入城堡,并取得宝藏。求取得宝藏所需的最短时间。。1,边界有字母,或者#表示入口。#表示从这里进入可以获得0个炸弹,A表示可以获得1个炸弹,B两个。。。2, 星号表示障碍,不可通过。点表示同路,通过的时间为0。1-9表示从这点通过需要话费的时间,当然这个点可以用炸弹掉,通过的时间为0。开始的时候我按照普通的做法,在边界上找到一个入口就搜一次,结果TLE,然原创 2012-08-13 11:28:01 · 1201 阅读 · 0 评论 -
live archive 4210 - Almost Shortest Path(不包含最短路的最短路)
题意:找出一条近最短路,这条近最短路不包含所有最短路的边先找出所有最短路经过的点。再找最短路,要求使用的边不是最短路上的边(边的两点都是最短路经过的点,而且边长等于两点间的距离,则说明是最短路上的边)。两次spfa分别找到起点和终点的最短距离,当每一个点的两个最短距离加起来刚好是起点到终点的距离时,说明该点在最短路上。做这道题比较顺利,直接贴代码#include #include原创 2012-08-12 08:38:29 · 4136 阅读 · 0 评论 -
POJ 1679 The Unique MST(简单题)
题意: 判断最小生成树是否唯一,唯一则输出最小生成数的所有边之和,否则输出 NO。。。用两遍kruskal ,如果有大小相同的边,第一次则选择序号小的,第二次选择序号大的。如果两次生成的树相同,则是唯一的最小生成树。#include #include #include #include #include #include using namespace std;cons原创 2012-08-10 16:20:02 · 448 阅读 · 0 评论