
=======图论=======
文章平均质量分 81
九野的博客
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
URAL 1963 Kite 四边形求对称轴数
题目链接: http://acm.timus.ru/problem.aspx?space=1&num=1963题意,顺时针或逆时针给定4个坐标,问对称轴有几条,输出(对称轴数*2) 对于一条对角线,若他是对称轴,必须满足:另外2点关于这条对角线对称 =》 2条对角线互相垂直且 与这条对角线形成的夹角相等 而对于每条边的中点,只需要证明中点相连后与其所在的边垂直即可,垂直且原创 2013-09-06 08:51:58 · 1944 阅读 · 0 评论 -
HDU 3018 Ant Trip
题意:n个点m条边,求用几笔可以把所有边画完(画过的边不再画)思路:并查集+欧拉回路对于每个连通分量,若是欧拉回路则一笔画完,若不是则 需要: 奇度数点个数/2 然后把每个连通分量所需的笔数相加这里要注意一个点是不用画的 #include#include#include#include#include#include#define N 10001原创 2013-09-01 21:57:07 · 1917 阅读 · 0 评论 -
HDU 4708 Rotation Lock Puzzle && 2013 ACM/ICPC Asia Regional Online —— Warmup
#include #include #include #include #include #include #include #include #include #include #include #include #define inf 107374182#define N 105#define im -1000000#define l原创 2013-09-08 17:40:01 · 2181 阅读 · 0 评论 -
HDU 4714 Tree2cycle 求树的分叉数 && 2013 ACM/ICPC Asia Regional Online —— Warmup
题意:给定n,下面一棵树删边和加边的操作花费1个单位时间,问把树变成环需要最少的时间是多少思路:搜索树,答案就是树的分支数*2(变成直线) +1 (变成环)mark:#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #include using name原创 2013-09-08 19:29:36 · 1948 阅读 · 1 评论 -
Uva 12537 Radiation
Problem DRadiation Time Limit: 2 seconds Nuclear power plants (NPP) are a blessing and curse of modern civilization. NPPs have some risks but still it is one of the cheapest ways to produce原创 2013-09-04 08:59:57 · 2192 阅读 · 0 评论 -
求割顶模版
割顶:去掉该点后图的连通分量数目增加,则称该点为割顶,下图中D和E是割顶 struct node{ int from,to,nex;}edge[2*M];int head[N],edgenum;void addedge(int u,int v){ node E={u,v,head[u]}; edge[edgenum]=E; head[u]=ed原创 2013-09-12 22:39:59 · 1566 阅读 · 0 评论 -
HDU 4740 模拟题意
题意:驴和老虎在方格中跑,跑的方式:径直跑,若遇到边界或之前走过的点则转向,驴向右转,虎向左转,若转向后还不能跑则一直呆着不动,问:他们是否会相遇,会输出相遇坐标,不会输出-1 #include #include #include #include #include #include #include #include #include #inclu原创 2013-09-15 17:49:23 · 2610 阅读 · 0 评论 -
HDU 4739 求正方形个数
求所有可能围成的正方形,借个代码#include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LL long long#define PI acos(-原创 2013-09-15 17:46:46 · 3510 阅读 · 0 评论 -
欧拉回路及哈密顿回路
转载自:http://blog.youkuaiyun.com/zhang360896270/article/details/8746783欧拉图:在图为连通图的前提下,欧拉通路:当前图中经过每条边一次且仅一次,若最终回到出发点则称为欧拉回路。相关判定条件(图联通)(1)无向图存在欧拉回路的条件是:图中不存在奇度结点,有向图存在欧拉回路的条件是:每个结点出度均等于入度。(2)无向图存在欧拉通转载 2013-10-04 21:38:37 · 3289 阅读 · 0 评论 -
SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管
题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4313 判断是不是存在拆图得到新连通分支的点个数是K的倍数注意一个点所连的边只能被切一条 #include#include#define N 200001struct node{ int f,t,fn,tn,nex;}edge[原创 2013-10-13 19:51:29 · 1580 阅读 · 0 评论 -
HDU 4607 树的直径
#include #include #include #include #include using namespace std;#define N 100005#define INF 1<<30int n,dis[N],E;bool vis[N];vectorG[N];int BFS(int x){ int i; for(i=1;i<=n;i++)dis[i]=IN原创 2013-07-25 10:52:40 · 1471 阅读 · 0 评论 -
FOJ 2141 随机法 求边数至少为原图一半的同构子图 且子图为二分图
题目链接:http://acm.fzu.edu.cn/problem.php?pid=2141题意:给定n个点 m条无向边的无向图 求一个 至少包含m条边的同构子图 且是二分图输出二分图的 X点集 和 Y点集 思路:非正解我们可以先随机出一组解,再判断这组解是否可行(估测可行解空间较大)#include#include#include#include原创 2013-12-23 20:58:00 · 2499 阅读 · 0 评论 -
HDU 4118 树型dp 求树中每个点移位所需总 最小路径和
题意:T个测试案例n个点下面为一棵带权树问:每个点上站一个人,每个人都走到另一个点上,需要的 总路径和最小 输出这样的路径和思路:(百度借的)ans = Σ (每条路长 l )*(经过这条路的最大次数 f )f = 2 * 这条边左边节点数和右边节点数最小值k. (这样左边的每一个点一定能够对应右边的某个点)这个k可以dfs 求得. #pragma co原创 2013-11-21 20:27:12 · 1801 阅读 · 0 评论 -
POJ 1438 混合图定定向为强连通图 双连通
题意:给定n个点 m条边 (点标从1开始)下面m行表示边 u v k (k=1为单向,k=2为双向)问:把尽可能多的无向边定向使得最终图保持强连通的性质(任意两点可达)答案保证有解。输出所有无向边最终的情况u v k (k = 2表示不定向 , k = 1表示定向为 u->v)思路:1、tarjan:由于图中既有有向边,又有无向边,那么先把有向边视为无向,用双连原创 2014-01-22 20:48:09 · 2661 阅读 · 1 评论 -
POJ 2195 费用流裸题
题意:给定n*m的矩阵 (最大100*100).为空地 H为房子 m为人 (题目保证 H的个数一个房子只能住一个人问:让每个人回到任意一个房子使得所有人需要步数最少,问最少需要多少步。思路:费用流,虚拟源点与人建边 费用为0, 一个人与所有房子建边,费用为步数, 房子与汇点建边费用为0所有边流限为1#include #include #include #原创 2014-01-23 21:28:01 · 1888 阅读 · 4 评论 -
POJ 2516 费用流裸题
题意:n家店,m个供应商,k件商品n*k 矩阵 第i行表示第i家点对物品的需求m*k矩阵 第i行表示第i家供应商物品存货下面有k个矩阵第k1个矩阵 大小为n*m,表示对于第k1件物品在运输中的消耗 题目保证存货能够供应需求问:让所有店满足需求时,最小运输消耗思路:费用流裸题原创 2014-01-23 23:03:18 · 1683 阅读 · 0 评论 -
POJ 2112 二分+网络流
题意:K个挤奶器 C头牛 每个挤奶器可同时挤C头牛牛和挤奶器均分散在各个农场下面给出 [K+C,K+C] 的邻接矩阵。表示任意点间距离(0表示无法到达)问:距离挤奶器最远的牛 的距离(设计一个方案使得所有牛都能到达挤奶器并且使这个距离最小,题目保证有解)思路:Floyd求传递闭包。二分这个距离(在距离内的边都可行),网络流判断是否可行(XXWG的代码)#原创 2014-01-25 21:15:58 · 1388 阅读 · 0 评论 -
POJ 2455 二分+网络流
题意:给定n个点m条边的无向图 K值下面给定m条边及其边权问:起点为1,终点为n找到至少K条边不相交的路径,输出这个方案中所有边的最大边权 思路:二分答案+网络流,使得汇点>=K即为可行解 #include #include #include #include #include #include #include #include原创 2014-01-25 22:52:08 · 1641 阅读 · 0 评论 -
Uva 10806 求2条不相交最短路 费用流
题目链接:题意:给定n个点[1,n]m条无向带权边下面m行 u v dis 表示边问:从1走到n 再从n-1,最短需要走多远(走过的路不能再走) 思路:对于普通最短路我们可以用费用流,终点限流为1,费用为边权,每条边限流为1 , 得到 这里我们可以看作从 1-n的两条不相交最短路 这样我们将终点限流为2,满流时就有两条不相交的最短路不满流时说明没原创 2014-02-23 21:59:01 · 1986 阅读 · 0 评论 -
LA 3989 稳定婚姻匹配
题意:T个测试数据一个n*n矩阵[i,j] 表示i男喜欢j女的程度问:一个匹配使得婚姻稳定(如果存在一对不是夫妻但比喜欢当前的对偶更喜欢对方,则他们会在一起,这样得到的匹配是不稳定的) #include#include#include#includeusing namespace std;#define N 1010#define next ne原创 2014-02-23 23:21:42 · 1606 阅读 · 0 评论 -
Uva 11248 求只修改一条边的流量使得最大流>c 的所有可行边
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2205题意:给定一个有向网络,每条边均有一个容量。问是否存在一个从点1->n,流量为C的流。如果不存在,是否可以恰好修改一条弧的容量,使得这样的流存在? 第一行输入 N ,E, C (n原创 2014-02-23 19:08:23 · 2228 阅读 · 2 评论 -
UVa 11865 二分+最小树形图
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2965白书P347 #include #include #include #include #include using namespace std;/**原创 2014-02-24 18:30:56 · 1606 阅读 · 0 评论 -
ZOJ 3717 2-sat 进位精度
题意:在三维空间中给定n组,每组2个三维坐标 表示n组气球的中心坐标问:在每组中选取一个坐标,使得选出的n个坐标 有最大的半径(气球不能相交)问最大的半径是多少思路:二分半径,2-sat判可行解因为这不能四舍五入,所以最后要去掉误差后面的小数,然后暴力求解 #include#include#include#include#include原创 2014-02-15 22:36:41 · 1623 阅读 · 0 评论 -
HDU 3996 最大权闭合图 网络流
题意:有一些金矿区域,挖一个金矿时必须挖掉上边的跟他关联的,为最多赚的钱数。输入解释:第一个行是样例的组数。第二行表示有n个区域,接下来的一行m表示第i个区域的金矿的个数为m。接下来的m行为这个区域金矿花费的钱数,获得钱数,以及相关连的金矿的个数w,(下面的w行就是表示这些相关联的金矿的区域和在这个区域的第几个)。建图:把点权为b(b>0)的连到源点,边权为b点权为a(a然后建出原图,原创 2014-03-19 17:59:46 · 1530 阅读 · 0 评论 -
Uva 10765 点双连通求删任意点后剩下图中的连通分量数
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&category=&problem=1706&mosmsg=Submission+received+with+ID+13561937题意:给定n个点 常量m下面给出无向边(输入-1 -1表示终止加边)得到原创 2014-04-29 17:08:39 · 1574 阅读 · 0 评论 -
HDU 3191 有向图次短路条数
题意:给定n个点(点标[0,n-1])m条有向边,起点和终点问次短路的条数(一定存在次短路权值>最短路)记录每个点的最短路,次短路的长度和方法数则当更新最短路时就要把旧的最短路路径赋给次短路,剩下的状态转移还是比较明显的而所有可转移的点中优先转移先更新最近的点。则如此更新有些类似bfs更新过就不再更新该点。因为给出的图中所有边{u,v,dis},u必原创 2014-03-29 10:52:16 · 1937 阅读 · 1 评论 -
ZOJ 3781 Paint the Grid Reloaded BFS
题意:给定n*m 的矩阵每个格子有O X 两种颜色可以选择1个同颜色的块,翻转为另一个颜色。问翻转为只有1种颜色需要最小几次操作bfs枚举每个第一次选择的节点#include#include#include#include#include#include#include#includeusing namespace std;#define N 45原创 2014-04-17 17:22:45 · 2163 阅读 · 2 评论 -
HDU 3036 Escape 网格图多人逃生 网络流||二分匹配 建图技巧
题意:每个' . '有一个姑娘, E是出口,'.'是空地 , 'X‘ 是墙。每秒钟每个姑娘可以走一步(上下左右)每秒钟每个出口只能出去一个人给定n*m的地图, 时限T问所有姑娘能否在T秒内逃生,若能输出最小值,不能输出"impossible"思路:显然是二分答案+网络流判可行。因为每个出口每秒钟只能出去一个人,那么就把每个出口按时间拆点,则T秒钟就拆成T个点。原创 2014-05-03 22:34:20 · 2245 阅读 · 0 评论 -
SGU 194 无源无汇上下界网络流
题目链接:http://acm.sgu.ru/problem.php?contest=0&problem=194题意:n 个点 m条有向边u v l r 代表该边的流量区间为 [l,r]若存在最大流则输出每条边的流量若不存在则输出NO#include#include#include#include#include#includeusing namespa原创 2014-04-02 19:57:15 · 1758 阅读 · 0 评论 -
ZOJ 3319 有向图加边成环方法数
题意:给定n个点 以及有向边的矩阵。我们定义原创 2014-04-05 21:53:28 · 2123 阅读 · 0 评论 -
HDU 3829 最大du立集=2个点集点数-最大匹配数
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define mod 1000000007#define N 505int lef[N], pn;//lef[v]表示Y集的点v 当前连接的点 , pn为原创 2014-04-21 18:49:56 · 1656 阅读 · 0 评论 -
ZOJ 3229 有源汇上下界网络流
有源汇上下界网络流建图:我们称原图中的源汇点为 from, to称我们手动附加的源汇点为 S, T1、首先由给定的图建好上界的边2、for(i = from; i 0) add( S, i, in[i]);如此把原图中所有点(包括 from, to )按照无源汇上下界与 S,T 连边3、加一条 边 add(to, from, inf); 建图完成。跑一遍网络流 m原创 2014-04-07 17:55:19 · 1754 阅读 · 0 评论 -
HDU 4280 Island Transport 网络流裸题
非递归版好像被卡掉了,其他2个板子都能过。#include#include#include#include#includeusing namespace std;#define ll intconst int MAXN = 100100;//点数的最大值const int MAXM = 400010;//边数的最大值const int INF = 0x3f3f3f3f;st原创 2014-05-09 18:50:38 · 1446 阅读 · 2 评论 -
HDU 3376 && 2686 方格取数 最大和 费用流裸题
题意:1、一个人从[1,1] ->[n,n] ->[1,1] 2、只能走最短路3、走过的点不能再走问最大和。对每个点拆点限流为1即可满足3.费用流流量为2满足1最大费用流,先给图取负,结果再取负,满足2#include #include #include #include #include #include #include #include #d原创 2014-05-17 13:56:43 · 1482 阅读 · 0 评论 -
ZOJ 3795 Grouping 缩点拓扑序下求最长链
题意:给定n个点,m条有向边。把点分成几个集合使得每个集合中的任意2点都不可达(一个集合只存放一个点也可以)问最少需要分成几个集合。如果没有环,则这个题目就是求有向图的最长链,拓扑序下跑bfs即可。但是有环,所以把环缩点成新点x,而点x的点权就是x点在原图中对应的顶点个数。缩点后就是有向无环图,继续跑一个拓扑序。#include #include #includ原创 2014-06-02 16:16:54 · 2290 阅读 · 0 评论 -
ZOJ 3794 Greedy Driver spfa
题意:给定n个点,m条有向边,邮箱容量。起点在1,终点在n,开始邮箱满油。下面m行表示起点终点和这条边的耗油量(就是长度)再下面给出一个数字m表示有P个加油站,可以免费加满油。下面一行P个数字表示加油站的点标。再下面一个整数Q下面Q行 u v 表示在u点有销售站,可以卖掉邮箱里的任意数量的油,每以单位v元。问跑到终点能获得最多多少元。先求个每个点的最大剩原创 2014-06-02 17:31:21 · 2237 阅读 · 0 评论 -
PJOI PKU Campus 2011 B:A Problem about Tree LCA 求任意点x为根的y的父节点
题目链接:点击打开链接题意:给定n个点 m个询问下面n-1行给定一棵树m个询问 x y问把树转成以x为根 y的父节点是谁第一种情况lca==y那就是x的第 dep[x] - dep[y] -1 父亲,依次向上爬山坡,利用倍增的二进制加速。第二种就是Father[y];#include"cstdio"#include"iostream"#include"queue"原创 2014-05-14 23:41:29 · 1844 阅读 · 0 评论 -
Codeforces 384E 线段树+dfs序
题目链接:点击打开链接题意:给定n个点,m个询问的无向树(1为根)下面n个数表示每个点的权值下面n-1行给出树操作1:x点权值+v, x的第 i & 1 的儿子-v, 第 !(i&1) 的儿子+v操作2:询问x点权值dfs把树转成序列根据深度把点分成2组分别用线段树维护。。然后Y一下#include#include#include#include原创 2014-06-24 16:33:01 · 1481 阅读 · 0 评论 -
Codeforces 96D Volleyball spfa
题目链接:点击打开链接题意:给定n个点m条边的无向图起点、终点下面m行表示边和边权再下面n行表示每个点有一辆出租车,这辆出租车能开的最远距离和搭乘这辆车的费用问到终点的最小费用开始感觉复杂度太大不好下手,暴力出奇迹。。Y一下即可得到 spfa套spfa注意inf要足够大,__int64#include#include#include#inclu原创 2014-06-23 18:12:33 · 1392 阅读 · 0 评论 -
Codeforces Round #192 (Div. 2) B
题意:求所有城市间,从任意城市出发,经过1条或2条边能到达其他任意城市所需建的最小边数第一行给定n,m代表n个城市下面m行输入:u,v代表u和v之间不允许建边 输出首先是建立的边数然后下面输出这些边思路:输出个星X图(忘记叫什么名字了。。离散里的)就是找一个能和所有点建边的点(不允许边中度为0),然后这个点和所有点建边即可B. Road Constructi原创 2013-07-24 21:44:13 · 1588 阅读 · 0 评论