
图论
sepNINE
it is written
展开
-
poj 2704 Pascal's Travels 动态规划
题意:原创 2014-11-25 17:10:54 · 709 阅读 · 0 评论 -
poj 2195 Going Home 二分图最小权匹配KM算法
KM算法解二分图最大(小)权匹配的简洁准确模板!(配例题)原创 2014-12-05 19:58:23 · 1050 阅读 · 0 评论 -
poj 1719 Shooting Contest 二分图匹配的一种特殊情况
题意:给一个r行c列的网格,其中一些格子可以选,要选一种方案,满足:1,每行至少选一个。2,每列恰好选一个。分析:二分匹配,特殊的地方在于每行至少要选一个。可以先做一次二分匹配,保证每行匹配好,然后对于没匹配的列任意匹配。代码://poj 1719//sep9#includeusing namespace std;const int maxN=1024; int M原创 2015-01-30 10:54:00 · 841 阅读 · 0 评论 -
poj 3565 Ants KM
题意:给n只蚂蚁和n课苹果树的坐标,要让每只蚂蚁去一棵苹果树,路线不能重复,求一种可行方案。分析:当某种匹配可行时蚂蚁所走的距离和是最小的,可以直接用KM算法求二分图最小权值匹配。还有一种做法是先假定一种匹配,如果其中有交叉就进行调整。代码://poj 3565//sep9#include #include using namespace std;const in原创 2014-12-06 00:25:20 · 1476 阅读 · 0 评论 -
poj 3767 I Wanna Go Home 最短路spfa
自从会了spfa,妈妈再也不用担心我的最短路问题了!poj 3767 最短路变形 解题报告~~spfa你值得拥有!原创 2014-12-05 15:21:36 · 1070 阅读 · 0 评论 -
poj 1780 Code 有向图输出欧拉路径+非递归深搜
题意:给一个数字n,n位数的密码最多有10^n个,现在要求一个字符串包含这10^n个串恰好各一次且字典序最小。分析:把每个可能的串看作边,构成这个串的两个n-1位数看作点则转化为欧拉路径问题,比如n==4时有u=423,v=239,e=4239.这题用递推会暴,要使用dfs的非递归写法:while(1){if(栈中结点无法再扩展)将栈中结点放入close表,出栈(栈为空退出);wh原创 2014-12-22 10:17:00 · 928 阅读 · 0 评论 -
poj 3686 The Windy's 二分图最小权和匹配KM
KM算法解二分图最小权和匹配的经典构图例题原创 2014-12-06 11:08:34 · 897 阅读 · 0 评论 -
poj 3037 Skiing 最短路spfa
题意:给一个R行C列的地图,g[i][j]表示该点的高度,相邻两点距离为1,初速度为起始点的v速度,末速度为初速*2^下降高度,求(1,1)到(R,C)的最短时间。分析:关键是搞清楚在每个点的速度只跟在点(1,1)的初速有关,跟怎么到这个点是没有关系的,因为他们之间的高度差恒定,之后就可以用spfa水了。代码:#include #include using namespa原创 2014-11-29 22:34:22 · 631 阅读 · 0 评论 -
poj 2400 Supervisor, Supervisee KM求二分图+dfs输出所有解
KM算法求二分图最小权匹配+dfs输出所有方案模板(附例题)原创 2014-12-05 23:02:46 · 936 阅读 · 0 评论 -
poj 3164 Command Network 最小树形图
有向图定点最小生成树(最小树型图)准确简洁模板,有步骤详细解释!花了2天查资料整理的!!!还看不懂留言,有留必回!!!原创 2014-12-04 14:45:38 · 803 阅读 · 0 评论 -
poj 1300 Door Man 无向图欧拉路径存在判断
题意:给n个房间和m道门以及起点,问是否可以从起点到0号房间,经过每道门恰好一次。分析:把门看作边则是无向图是否存在欧拉路的问题。代码://poj 1300//sep9#include using namespace std;const int maxN=32;char s[1024];char tmp[20];int start,n,cnt;int d[max原创 2014-12-19 19:26:19 · 805 阅读 · 0 评论 -
poj 1386 Play on Words 有向图欧拉路径判断
题意:给n个单词,问是否可以将他们排成一排,使得前一个单词的末字符和后一个单词的首字符相同。分析:把每个单词看成一条边,转化为有向图是否存在欧拉路径问题。代码://poj 1386//sep9#include #include #include #include #include using namespace std;const int maxN=30;in原创 2014-12-19 17:16:44 · 1061 阅读 · 0 评论 -
poj 2627 Gopher and hawks 最短路
题意:给老鼠的速度v和移动时老鼠在洞外的最长时间m、地面上n个点的坐标,问老鼠是否可以从洞1到洞2,可以的话求最少跳数。分析:裸的最短路,注意精度。代码://poj 2627//sep9#include #include using namespace std;const int maxN=1024;const int maxM=2000024;int n,e,h原创 2015-01-07 19:51:09 · 705 阅读 · 0 评论 -
poj 1383 Labyrinth 树的直径
题意:给一个迷宫,其中任意两个可以走的点之间只有一条路,求在这个迷宫里最长能走多远。分析:求树的直径,两次dfs即可。代码://poj 1383//sep9#include using namespace std;const int maxN=1024;char g[maxN][maxN];int d[maxN][maxN];int r,c;int dx[6]=原创 2014-12-02 09:36:52 · 776 阅读 · 0 评论 -
poj 2530 Tetris Alphabet 拓扑排序
题意:给一个俄罗斯方块的游戏截图,其中每个输入块都用字母A-Z标志出,求输入块的字典序最小的输入顺序。分析:即求字典序最小的拓扑序。代码://poj 2530//sep9#include using namespace std;char map[54][32];int g[32][32];int d[32];int vis[32];int main(){ i原创 2015-01-07 18:32:21 · 1085 阅读 · 0 评论 -
poj 1659 Frogs' Neighborhood 度序列可图化 贪心
题意:对一个无向图给出一个度序列,问他是否可简单图化。分析:根据Havel定理,直接贪心即可。代码://poj 1659//sep9#include #include using namespace std;struct Node{ int num,ids;}p[16];int ans[16][16]; int n;int cmp(Node a,Node原创 2014-12-17 08:48:16 · 929 阅读 · 0 评论 -
poj 1041 John's trip 欧拉回路
欧拉回路例题与解答原创 2014-12-17 23:21:56 · 656 阅读 · 0 评论 -
poj 1975 Median Weight Bead floyd算法
题意:给n颗豆和m个重量关系,要求有几个豆不可能是重量排在第n/2个的。分析:在原图和他的逆图上两次floyd算出对每颗豆有多少豆比它重和比它轻。代码://poj 1975//sep9#include #include using namespace std;const int maxN=1024;int vis[maxN];int heavier[maxN],原创 2014-12-18 00:21:16 · 576 阅读 · 0 评论 -
poj 3592 Instantaneous Transference 强连通缩点+在DAG上dp求最长路
题意:给一个地图,在每一点只能向下或向右走,其中标有‘*’点上有传送门可以传送到他指定的位置,标有数字的点上代表在该点可以得到的矿石,标有‘#’的点代表这点不能走,求从(0,0)点开始能最多获得多少矿石。分析:因为有传送门所以图中可能有环,缩点后在所得的DAG中求最长路就可以了。代码://poj 3592//sep9#include #include using nam原创 2014-12-16 22:14:23 · 731 阅读 · 0 评论 -
poj 2337 Catenyms 有向图欧拉路径
有向图输出欧拉路径O(e)实现,配例题。原创 2014-12-18 22:33:46 · 914 阅读 · 0 评论 -
poj 2516 Minimum Cost KM或最小费用流
最小费用最大流问题的二分图最小权匹配解法!(数据满足一定条件:二分图,拆点数较小)。原创 2014-12-06 18:49:02 · 993 阅读 · 0 评论 -
poj 2771 Guardian of Decency 最大独立集
题意:有n个人,其中有一些人在一起会搞呢飞起,现在他们要出去玩,求最多能去多少人。分析:若两个人会搞呢飞起则他们之间有一条边,转化为求最大独立集问题(二分图。。)。代码:#include #include using namespace std;const int maxN=512;struct Stu{ int h; string gender,music,s原创 2014-12-07 00:37:57 · 634 阅读 · 0 评论 -
poj 2584 T-Shirt Gumbo 二分图多重匹配
题意:有x个选手,每个选手有能接受的T恤号码,每种号码的T恤都有一定的数量,问是否有一种分配方案能让所有的选手都满意。分析;二分图的多重匹配问题,用匈牙利变形直接水。代码://poj 2584//sep9#include using namespace std;const int maxX=32;const int maxY=8;int cap[maxY],g[ma原创 2014-12-24 16:05:14 · 652 阅读 · 0 评论 -
poj 1275 Cashier Employment 差分约束
差分约束模板题,差分约束是判断联立不等式组是否有解的一种方法,建图是关键。代码://poj 1275//sep9#include #include using namespace std;const int maxM=10024;const int maxN=32;struct Edge{ int v,w,nxt; }edge[maxM];int t[maxN],c原创 2015-04-17 21:40:19 · 742 阅读 · 0 评论 -
poj 1698 Alice's Chance 二分图多重匹配
题意:一个演员要拍n部电影,每部电影只能在一周的特定几天拍(如周2,周4,周5),第i部电影要拍di天,必须要在wi周拍完,问演员是否可以完成任务。分析:建二分图,转化为二分图的多重匹配。代码://poj 1698//sep9#include using namespace std;const int maxX=64*7;const int maxY=64;int原创 2015-05-13 15:35:48 · 1047 阅读 · 0 评论 -
poj 3241 Object Clustering 曼哈顿最小生成树
题意: 平面上有n个点,现在把他们分成k个集合,使得每个集合中的每个点都至少有一个本集合的点之间的曼哈顿距离不大于X,求最小的X。分析: 转化为求n个点生成完全图的最小生成树的第k大边。接下来有几个重点。1)根据莫队算法,由于边权是点的曼哈顿距离,每个点只需要跟周围8个方向中每个方向最近的点连边,这样算出的图与用完全图算出的最小生成树一样,涉及的边却大大原创 2015-06-29 10:28:55 · 1494 阅读 · 0 评论 -
poj 1237 The Postal Worker Rings Once floyd算法水题
//poj 1237//sep9#include using namespace std;char s[128];int g[32][32],d[32];int main(){ int ans=0; memset(g,0x7f,sizeof(g)); memset(d,0,sizeof(d)); while(1){ if(scanf("%s",s)==EOF) b原创 2015-11-05 11:07:26 · 667 阅读 · 0 评论 -
poj 1158 TRAFFIC LIGHTS spfa求最短路
//poj 1158//sep9#include #include using namespace std;const int maxN=312;const int maxM=30012;struct Edge{ int v,w,nxt;}edge[maxM];int S,T,n,m,e;int rc[maxN],tb[maxN],tp[maxN],d[maxN],head原创 2015-10-25 21:25:12 · 470 阅读 · 0 评论 -
poj 3398 Perfect Service 树形dp类似求树的点最小支配集
//poj 3398//sep9#include #include using namespace std;const int MAXN=10024;vector g[MAXN];int dp[MAXN][3],tmp[MAXN];void dfs(int u,int p){ if(g[u].size()==1&&g[u][0]==p){ dp[u][0]=1; dp原创 2015-12-10 19:31:15 · 564 阅读 · 0 评论 -
poj 1463 Strategic game 树的最小点覆盖
//poj 1463//sep9#include using namespace std;const int MAXN=1600;struct EDGE{ int v,nxt;}edge[MAXN*2];int M,v1,v2,e; bool g[MAXN][MAXN]; bool vis[MAXN]; int link[MAXN]; int head[MAXN原创 2015-12-11 10:03:42 · 520 阅读 · 0 评论 -
poj 3659 Cell Phone Network 树的最小点支配集
题意:给一棵树,求它的最小点支配集。分析:树形dp,注意点支配集与点覆盖集的区别是点支配集是覆盖所有的点,点覆盖集是覆盖所有的边,看看这组数据就知道为什么每个点有3个状态了:111 21 31 41 53 66 77 87 97 107 11代码://poj 3659//sep9#include #include using namesp原创 2015-12-10 17:06:58 · 591 阅读 · 0 评论 -
poj 3895 Cycles of Lanes 修改tarjan算法求图中最大环
修改tarjan算法求图中最大环原创 2015-04-07 11:58:06 · 1932 阅读 · 0 评论 -
poj 2112 Optimal Milking 二分+最大流
根据这题可以总结出处理网络流问题中需要“跳过”某一节点的办法(跳过是指需要占用经过某一节点但又不占用其流量):1.floyd求全局最优路径建图前直接跳过。2.拆点成A-A1,A-A1是经过该点的实际流量,并由A1流出相同的流量。+oo流进A,A->B1走需要跳过的流量。代码://poj 2112//sep9#include #include #include using name原创 2015-04-18 15:09:10 · 829 阅读 · 0 评论 -
poj 4046 Sightseeing 枚举思想在spfa中的应用
题意:给一个图和q个询问,每个询问查询图中两点的(距离+路径上最大值)的最小值。分析:枚举路径上的最大值做spfa,这题丫的卡常数。。。队列用stl的就等着tle吧。代码://poj 4046//sep9#include #define inf ((~(0ULL))>>1)using namespace std;const int maxN=1024;const i原创 2015-03-29 22:44:17 · 770 阅读 · 0 评论 -
poj 3140 Contestants Division 树的遍历
题意:给一棵树,每个节点有一个值v,现在要去掉一条边,使分成的两棵树的v的和的差值最小。分析:水题,注意数据范围。代码://poj 3140//sep9#include using namespace std;const int maxN=200024;int n,m,e;__int64 sum,ans;struct Edge{ int v,next;}ed原创 2014-12-28 23:52:04 · 763 阅读 · 0 评论 -
poj 3342 Party at Hali-Bula 判断二分图最大点独立集是否唯一
题意:给一个二分图,判断最大点独立集是否唯一。分析:匈牙利算法。代码://poj 3342//sep9#include #include #include using namespace std;const int maxN=212; int n;int M,v1,v2;bool g[maxN][maxN];bool vis[maxN];int link[原创 2015-02-06 15:52:29 · 813 阅读 · 0 评论 -
poj 2914 Minimum Cut 无向图最小边割
无向图最小边割stoer-wagner算法准确,简洁,高效模板!!原创 2014-12-31 23:45:13 · 999 阅读 · 0 评论 -
poj 2907 Collecting Beepers 邮递员问题暴力解法
题意:给起点和n个点,求从起点出发经过这n个点每个点至少一次再回到起点的最短路。分析:类似邮递员问题,直接用STL枚举访问顺序暴力解决。代码://poj 2907//sep9#include #include using namespace std;int x[16],y[16];int d[16][16];int a[16];int n;int main()原创 2015-01-24 22:06:57 · 1328 阅读 · 0 评论 -
poj 4045 Power Station dfs求树上最小距离和
题意:给一棵树,每条边的权值为R*I^2,求到所有其他节点权值和最小的点和相应最小权值和。分析:先将图转化成树,然后在树上dfs。代码://poj 4045//sep9#include#includeusing namespace std;const int maxN=50012;vector g[maxN];int vis[maxN],bro[maxN],son原创 2015-03-27 23:45:56 · 826 阅读 · 0 评论 -
poj 2230 Watchcow 欧拉回路
题意:给一个图,求一种从点1出发,经过所有边恰好两次回到点1的方案,数据保证有解。分析:欧拉回路,改下次数就好了。代码://poj 2230//sep9#include #include #include using namespace std;const int maxN=10024;const int maxM=50048;int head[maxN];i原创 2015-03-09 01:02:37 · 656 阅读 · 0 评论