青岛oj集训6
2.P1938 [USACO09NOV] Job Hunt S - 洛谷
跑最长路,判正环,跑SPFA
3.P3956 [NOIP 2017 普及组] 棋盘 - 洛谷
把每一个格子都当做一个点,相邻格子连边
把每一个无色点拆分成浅红点和浅黄点,以后再去连边就行
注意:无色点不能连无色点
给定一张有向无环图,找最长链,跑拓扑
排名就是拓扑序
f[i]:i的层数,满足f[v]=max(f[u1]+1,f[u2]+1,…f[u(r[i])]+1)
性质:层数相同的节点在拓扑序中可以随意交换,且层数大的一定在层数小的后面
如果存在一层中有多个节点,那么这几个节点一定互相交换位置后是全新的一个拓扑序
所以若存在f[i]=f[j],则有其他拓扑序,否则没有
更好的办法:如果有一个点的层数为n-1,那么拓扑序一定是唯一的

6.P2419 [USACO08JAN] Cow Contest S - 洛谷
法1:传递闭包
跑Floyd,传递闭包,如果所有点与这个点的关系是确定的,有关系,那么ans计数

法2:DAG的层数(时间复杂度优势,但要特判联通)
如果某一个层里只有一个点,那么这个点的排名是确定的,但前提是这张DAG是弱联通图(所有的边看成无向边)
如果这张图是弱连通图,那么根据层数判断,否则所有点都无法判断


但是有特判:1指2、3,3指4,则2、4之间排名无法确定,要考虑link【i】【j】(我也不知道是啥啊)

+1的原因:只有v这一个点的路径(起点终点可以相同)
本文来自博客园,作者:永韶,转载请注明原文链接:https://www.cnblogs.com/yongshao/p/18815457

浙公网安备 33010602011771号