图论-拓扑排序
AcerMo
一只辣鸡大学生
展开
-
拓扑排序【模板】
TOPSORT(只适用于有向无环图) 关键思想:每次找只有出边的点,删掉该点和他所有的出边 拓扑内部的记录关键路径的过程需要根据题意修改 //By AcerMo #include<cmath> #include<queue> #include<cstdio> #include<vector> #include<cstring> #...原创 2018-02-26 11:23:46 · 268 阅读 · 0 评论 -
BZOJ2815&&洛谷P2597 [ZJOI2012]灾难
拓扑+LCA 思路清奇的一道好题 这个题真的不毒瘤!! 吐槽一下出题人如何同时吓死草原上的羊?? 先考虑一下暴力 反向建图跑个拓扑就完事了 考虑一些特殊的情况 假如输入的是一棵树,那么一个点的贡献就是他的子树大小-1,也就是子树中除他以外的所有点,但是大多数情况输入是一个DAG,那我们是不是可以找到一种方法,把它转化成一棵树呢? 我们考虑样例的情况 不难发现,若是4号点凉了,当且仅当2,3都凉了...原创 2018-10-25 11:02:51 · 299 阅读 · 0 评论 -
Codeforces512A&&510CFox And Name
拓扑水题 从每个字符串向它后面的字符串向后连边,然后拓扑判环,priority_queue确定顺序 代码 //By AcerMo #include&lt;queue&gt; #include&lt;cmath&gt; #include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;iostream&原创 2018-10-18 11:08:43 · 282 阅读 · 0 评论 -
洛谷P2881 [USACO07MAR]排名的牛Ranking the Cows
拓扑排序–&gt;传递闭包 我们要知道所有牛的排名,就需要知道所有牛的相对排名,所以一共是n*(n-1)/2对,但是会有这样一些条件不需要知道:1&gt;2,2&gt;3,所以1&gt;3所以第三对条件是不需要再找到一遍的,所以我们只需要找出这些不需要找的,用总数减去m再减去这些不需要的,就是最后结果 怎么求这些条件呢?不难发现,这玩意符合传递闭包,不存在环,所以我们可以反向建图,反向更新条件关系...原创 2018-09-20 10:07:48 · 285 阅读 · 0 评论 -
BZOJ2750&&洛谷P2505 [HAOI2012]道路
毒瘤题 拓扑+SPFA+暴力枚举 枚举起点,跑SPFA求出dis[i] 然后每进行完一次SPFA,就枚举最短路图中的所有边--->满足dis[fr]+cost=dis[to]的边就是最短路上的边,把这些边标记起来,构成一张最短路图,显然这张图上不存在环,因为不可能存在一条路径满足u->v->z->u,显然我们可以拓扑统计到达每个点的方案数 tot[to]+=tot[...原创 2018-09-06 20:46:43 · 296 阅读 · 0 评论 -
BZOJ2208&&洛谷P4306 [JSOI2010]连通数
tarjan缩点+拓扑 这道题我对拍了4K组,发现是数组开小了,CNBB 一开始有一个在lg上能A在BZ上WA掉的想法(后来自己造的数据卡掉了),就是我们缩完点后,反向连边,假如a->b,那就连一条b->a的边,表示a能到b,那么拓扑的时候就可以直接将b的siz加到a上,然后自己造的数据是 4 0010 0010 1000 0110 然后发现这个操作不行,就换一种写法反...原创 2018-08-28 21:46:48 · 266 阅读 · 0 评论 -
BZOJ1093&&洛谷P2272 [ZJOI2007]最大半连通子图
tarjan缩点+拓扑最长链+类似于SPFA统计方案 代码 //By AcerMo #include<queue> #include<stack> #include<cmath> #include<cstdio> #include<vector> #include<cstring> #include<iostrea...原创 2018-07-31 15:30:38 · 253 阅读 · 0 评论 -
洛谷P1038&&NOIP2003神经网络
半裸的拓扑排序,要注意一些毒瘤的点引用大佬的题解代码//By AcerMo#include<cmath> #include<stack> #include<queue> #include<cstdio> #include<vector> #include<cstring> #include<iostream> #i原创 2018-06-25 15:45:10 · 278 阅读 · 0 评论 -
BZOJ3012[Usaco2012 Dec]First!
题意中文不再赘述讲讲思路我们通过几组数据来看看规律1.abcd,abc,如果这两个串同时出现,那么abcd显然不能是字典序最小的,因为无论大小关系怎么变,abc恒小于abcd,这就等价于一个串若能当字典序最小的串,必定没有字串2.abc,abb,acbc,,这三个串只能选abb和acbc,abc<abb,abc<acbc,--->c<b,b<c,所以我们可以得出,若a...原创 2018-06-23 09:23:23 · 225 阅读 · 0 评论 -
洛谷 P1807 最大路
这是一道拓扑的水题,emmm求图中的最长路原题戳显然可以用最短路写,显然,也可以用拓扑排序写(top是正宗!)这里只给出拓扑排序的做法因为是求从1到n的最大路,所以只有1能到的点才能更新,所以需要一个标记数组,存储被谁更新,被1更新过就可以去更新其他点一个点的最大路=max{当前到他的最大路与之前连进来的最大路}代码如下//By Acer.mo #include<iostream> #...原创 2018-03-12 16:47:59 · 403 阅读 · 0 评论 -
自拟考试题 混乱国度
background 赵日天国王的国家由n个城市和许多道路组成,但是道路比较混乱,由m1条单向路和m2条双向路,赵日天希望你告诉他,怎样给双向路定向,使任何一座城市不能通过一些路径回到该城市Sample Input第一行 n , m1 ,m2接下来m1行,每行2个数字,分别代表a->b有一条单向路接下来m2行,每行2个数字,分别代表a与b有一条双向路Sample Outputm2行,每行两个...原创 2018-03-14 21:32:06 · 185 阅读 · 0 评论 -
洛谷 P1352 没有上司的舞会
原题这道题我非常神奇赖皮的用了拓扑,实际上这是一道树形dp,但是身为蒟蒻的我觉得拓扑可以写,结果真的让我水过了,哈哈哈用一个二维数组模拟每个人参加或者不参加,从最底层的员工开始向上拓扑代码//By Acer.mo #include<iostream> #include<cmath> #include<queue> using namespace std; int...原创 2018-02-26 15:10:12 · 289 阅读 · 0 评论 -
洛谷P4316 绿豆蛙的归宿
拓扑+期望 思路 因为每条边等概率,那么就很轻松了,我们先跑个拓扑,确定拓扑序之后,从最后一个点向前更新,初始是f[n]=0f[n]=0f[n]=0,能到n的点会获得(w[i]+f[n])deg[u\frac{(w[i]+f[n])}{deg[u}deg[u(w[i]+f[n])的期望长度,因为u的度数是deg[u]deg[u]deg[u]所以有1deg[u]\frac{1}{deg[u]}de...原创 2018-10-24 09:55:33 · 243 阅读 · 0 评论