
拓扑排序
huanghongxun
这个作者很懒,什么都没留下…
展开
-
POJ 3249 Test for Job 拓扑图DP
求DAG上的链使其上点权和最大。 DAG当然上DP了。需要注意的是处理某个点的答案必须要其前置的点都先处理完才可。#include <cstdio>#include <cstring>#include <algorithm>using namespace std;#define FOR(i,j,k) for(i=j;i<=k;++i)#define ms(i) memset(i,0,si原创 2016-03-16 18:16:48 · 816 阅读 · 0 评论 -
POJ 2762 Going from u to v or from v to u? 缩点
问所有点对间是否有单向路可达。缩点以后变成了一个DAG,那么判断入度0的点和出度0的点有几个即可。 然后只有入度0的s和出度0的t各1个点的时候,只有存在一条链从s到t且经过所有的点的时候,图才弱联通。 拓扑排序即可。忽然觉得刚才存模板的帖子没有用了。。#include <cstdio>#include <cstring>#define min(i,j) ((i)<(j)?(i):(j))原创 2016-03-07 22:43:18 · 445 阅读 · 0 评论 -
POJ 3592 Instantaneous Transference 缩点 拓扑图DP
棋盘有些格子有权值,有些不可走,还有一些是传送门可以直接传送到给定点。剩余的均只能向右或向下走。求对角最长路。首先,如果传送门产生了环,那么连通分量内的所有点都是可达的——点可以重复走,所以缩点,新点的权就是原分量内的权和。 然后的DAG跑最长路的很简单了。#include <cstdio>#include <cstring>#include <algorithm>using namespa原创 2016-03-16 18:43:14 · 477 阅读 · 0 评论 -
POJ 3687 Labeling Balls 拓扑排序
曾经是2012年AC的题。。 在POJ排到Rank 55是不是已经很好了。。#include <cstdio>#include <cstring>#include <queue>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i)using namespace std;const int N = 205, M = 40001;原创 2016-03-16 23:18:23 · 520 阅读 · 0 评论 -
BZOJ 1565 NOI 2009 植物大战僵尸 最小割 拓扑排序
#include <cstdio>#include <cstring>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i)using namespace std;const int inf = 0x3f3f3f3f, N = 660, M = 800005;int level[N], cnt = 1, cur[N], v[M],原创 2016-04-09 22:58:47 · 573 阅读 · 0 评论 -
BZOJ 2535|BZOJ 2109|BZOJ 2008|NOI 2010|航空管制|拓扑排序
求图的拓扑序,使各点v在序列中位置编号不大于给定的k[v]。 并求在拓扑序的最早出现的位置。最早出现和最晚出现相反,如果反序拓扑图,那么就变成最晚出现的位置,然后问题就简单了。。只要拓扑排序时不断地推迟对应节点的出现时间直到不能再推迟就可以了。至于不大于,由于至少出现的位置,因此只要是后面的就可以了,只要能放就放。BZOJ 2535和2109都卡\n和空格啊。。 BZOJ 2008好像不可做的样原创 2016-04-29 12:18:45 · 1086 阅读 · 0 评论 -
BZOJ 4562|HAOI 2016|食物链|动态规划
写水题掉RP啦 我记得这个还是去年学长研究性学习的内容之一。。不过很水就是了。。 DAG DP。。懒得写拓扑排序了(和DP融为一体)#include <stdio.h>const int N = 100005, M = N * 2;int dp[N], h[N], p[M], v[M], in[N], entry[N], cnt = 0;void add(int a, int b) {原创 2016-04-27 21:42:35 · 1283 阅读 · 0 评论