图论
文章平均质量分 74
palqing
这个作者很懒,什么都没留下…
展开
-
POJ图论总结【转载】
1062* 昂贵的聘礼 枚举等级限制+dijkstra1087* A Plug for UNIX 2分匹配1094 Sorting It All Out floyd 或 拓扑1112* Team Them Up! 2分图染色+DP1125 Stockbroker Grapevine FLOYD1135 Domino Effect 最短路1149* PIGS 网络流1161* Walls floyd1201 Intervals 差分约束1236* Network of Schools 强联通1251 Jung转载 2011-03-22 08:26:00 · 417 阅读 · 0 评论 -
【POJ 1984】Navigation Nightmare (并查集)
并查集的题,说是图论也算是吧。题目中较易出错的两个地方:一、index不一定是升序的,要注意按原题中的顺序输出结果。比如:8 71 2 1 S3 4 5 S5 6 8 S7 8 2 S3 2 3 N7 6 13 N5 4 7 N61 3 11 4 53 4 24 5 71 8 61 8 7应该输出的是-1957-139二、注意查询时可能一个时间查询多次。(如果出现这个错误的话,上面的那组数据中的最后一组估计不会得到正确的结果)#in原创 2011-04-11 10:14:00 · 736 阅读 · 0 评论 -
【POJ3615】Cow Hurdles 多源多点,Floyd扩展
<br />题目大意:<br />有一些奶牛要进行一些跨栏训练,训练场地共有不超过300个站点,有的两个站点之间有一条有向路,这条路中有一个跨栏,现在要求你找出从某一号站点到另一个指定站点中的所有路中,所能遇到的最高的栏最低的一条路(有点绕)。。<br />用Floyd-warshall算法,把缩边条件大致改一点点就OK了,这种题直接看代码可能更清楚。<br />#include<iostream>#include<cstdio>#include<cstring>#include<algorit原创 2011-04-09 09:22:00 · 641 阅读 · 0 评论 -
【POJ1201】Intervals 差分约束系统
原来有个更好的方法,不知道为啥有错,在改。。改好之后再好好写报告 。#include#include#include#include#include#includeusing namespace std;const int MAX=500010;int Head[MAX],Next[MAX],Tonum[MAX],top=0,Len[MAX],Q[MAX],inQ[MAX];int Rlen[MAX],maxb=0,INF=0x3fffffff;int n;set原创 2011-04-08 17:30:00 · 488 阅读 · 0 评论 -
【POJ 3159】 Candies 差分约束系统
题目意思(题意摘抄自其它博客):flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发,在班上,flymouse和snoopy是死对头,两人势如水火,不能相容,因此fly希望自己分得的糖果数尽量多于snoopy,而对于其他小朋友而言,则只希望自己得到的糖果不少于班上某某其他人就行了。比如A小朋友强烈希望自己的糖果数不能少于B小朋友m个,即B- AA、B小朋友的分得的糖果数。这样给出若干组这样的条件,要使fly最后分得的糖果数s1和snoopy最后分得的糖果数s2差别取原创 2011-04-07 11:09:00 · 638 阅读 · 0 评论 -
【POJ2135】Farm Tour 最小费用最大流
<br /><br /><br />题目大意:给你n个点(n <= 1000)和m条边(m <= 10000),现在从点1出发经过一些边后到点n,然后再经过一些边回到点1,每一条边只能走一次,每条边花费的时间不同。求最小路径。<br /><br /><br />解题思路:最小费用最大流。加一个源点S和一个汇点T,源点S与点1连一条容量为2费用为0点边,点n与汇点T也连一条容量为2费用为0的边,对于题目给定的那些边。每条边的容量为1,费用为每条边花费的时间。注意这是双向边。然后求最小费用。<br /><br原创 2011-04-06 13:24:00 · 728 阅读 · 0 评论 -
【POJ 1637】Sightseeing tour 混合图欧拉回路 最大流
<br />题意就是求混合图的欧拉回路是否存在。<br />题中说明了是连通图,并且任意一点都可由其它点达到。所以,不必再判断连通性了,直接最大流就OK.<br /> <br />看了看黑书,没看懂,看了看网上的解释,依然没看懂。。<br />后来,只好自己想啊想,想啊想,终于给A了。。<br /> <br />我是先把每个边都当成向边判断是否存在奇度顶点,如果存在肯定不存在欧拉回路了。<br />同时用一个数组d2只统计有向边获取每个点的有向的度(出度记为正,入度记为负)。<br />然后,建立出如下的图原创 2011-04-04 21:52:00 · 670 阅读 · 0 评论 -
【POJ 1149】 Pigs 最大流
<br /><br />大意是这样的:<br />· 有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。<br />· 一开始所有猪圈都是关闭的。<br />· 依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。<br />· 每个顾客分别都有他能够买的数量的上限。<br />· 每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。<br /> 问总共最多能卖出多少头猪。<br /><br /><br原创 2011-04-05 16:11:00 · 684 阅读 · 0 评论 -
第一次写最小费用最大流
写了POJ3281...那个题是求最大流的,我直接用它来验证一下最大流求得对不对。。。#include#include#include#include#include#include#include#define CLR(arr, val) memset(arr,val,sizeof(arr))using namespace std;const int MAX=200,INF=100000000;class MinCostMaxFlow{public: i原创 2011-04-02 11:27:00 · 405 阅读 · 0 评论 -
【POJ3281 Dining 】最大流
构图比较巧妙,数据量不大,直接用EK就能过构图时源->食物->牛->牛->饮料->汇任意边容量都是1不能构成“源->食物->牛->饮料->汇”,因为这样构图不能保证每头牛都只吃一份。#include#include#include#include#includeusing namespace std;const int MAX=410;int cap[MAX][MAX],flow[MAX][MAX];bool visited[MAX];//0序图下方可正常工作int原创 2011-03-30 14:27:00 · 662 阅读 · 0 评论 -
POJ1511 Invitation Cards
<br />//题意:求志愿者早上从总站分别到各站和晚上回到总站的最少总路费#include<iostream>#include<algorithm>#include<vector>#include<queue>#include<algorithm>#include<numeric>#include<cstdio>using namespace std;const int MAX=1000010;int Len[MAX];const int INF=1000000原创 2011-03-23 19:49:00 · 471 阅读 · 0 评论 -
POJ1502 MPI Maelstrom 基本最短路
<br />最基本的最短路径问题,求出到各个点的最短路,然后输出Len数组中的最大值即可,我用的SPFA<br />#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cstdio>#include<string>#include<sstream>#include<algorithm>#define getint(var) scanf("%d",&var)using name原创 2011-03-23 15:37:00 · 582 阅读 · 0 评论 -
POJ1125 Stockbroker Grapevine SPFA或Floyd
我写的SPFA数据很水,0MS#include#include#include#includeusing namespace std;const int INF=1000000;struct GNode{ GNode(){} GNode(short num,short len):len(len),num(num){} short len,num;};const int MAX=110;int Len[MAX];int SPFA(const vector原创 2011-03-23 13:01:00 · 577 阅读 · 0 评论 -
POJ 2607 / ZOJ 1857 /NYOJ210 Fire Station
Fire Station//SPFA..//ZOJ上,0MS,192K.现在第3..POJ上64MS,15名//NYOJ上的数据量是ZOJ上的20倍。。认为自己程序写得好的可以去提交试试/NYOJ210#include#include#include#include#include#include#includeusing namespace std;vector fire;const short MAX=500;int INF=0x7fff;struct GNo原创 2011-03-23 09:18:00 · 742 阅读 · 0 评论 -
POJ3660 Cow Contest Floyd算法
<br />初看起来是拓扑排序,DFS了一会儿之后发现不对头。。<br />仔细想想才看出原来是Floyd..<br />用1表示a>b,用2表示a<b,用0表示关系无法确定,然后,把FLoyd的缩边改成:if(Graph[j][i]==Graph[i][k] && Graph[j][i]) Graph[j][k]=Graph[j][i];<br />最后的Graph数组就表示了任意两个点之间的关系。<br />然后,就可以判断一下是不是某点与其它点之间的关系都是确定的(Graph数组中对应值不是0)。<b原创 2011-03-23 20:06:00 · 536 阅读 · 0 评论 -
我完成的图论题
POJ1062* 昂贵的聘礼 枚举等级限制+dijkstraPOJ2607,ZOJ1857,NYOJ210 Fire Station 最短路算法,除了在POJ之外,其它地方你都需要尽量考虑一下效率。。原创 2011-03-23 09:22:00 · 628 阅读 · 0 评论 -
POJ1975 Median Weight Bead
<br />和POJ3660主要思想是一样的<br /><br />用1表示a>b,用2表示a<b,用0表示关系无法确定,然后,把FLoyd的缩边改成:if(g[j][i]==g[i][k] && g[j][i]) g[j][k]=g[j][i];<br />最后的g数组就表示了任意两个点之间的关系。<br />最后如果哪一个点有(n+1)/2个以上的点比该点大或者比有(n+1)/2个以上的点比该点小,则说明该点不可能为中间重量的点。<br />#include<stdio.h>#include<str原创 2011-03-24 11:28:00 · 653 阅读 · 0 评论 -
【POJ 1986】Distance Queries 最近公共祖先
<br />题意:<br />给你一棵树,这棵树上任意边长已知,问你这棵树上任意两个点之间的距离,询问的次数很多,所以每次查询都深搜会超时。<br />思路:<br />以任意结点为根,用LCA的经典算法求出所有查询的两个结点的最近公共祖先,dfs求出任意一点到根结点的距离,则两个结点到最近公共祖先的距离可之和即为所求。<br /> <br />下面写的是用Tarjan算法求LCA的实现<br />#include<iostream>#include<cstdio>#include<cstring>原创 2011-04-11 13:52:00 · 908 阅读 · 0 评论