摘要: 对于每条对角线,若需要改变方向,则连边权为1的边,否则连边权为0的边,然后求从左上角到右下角的最短路即可。对于本题,可以用BFS来求最短路,每次扩展时把连通块内所有可以通过0边权的边走到的点加入队尾。时间复杂度$O(n^2)$。#includeconst int N=510,M=251010,T=M... 阅读全文
posted @ 2015-08-23 22:56 Claris 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 以深度建立线段树,线段树父亲节点向儿子节点连边,然后用线段树合并可以得到任何一个点子树的线段树,只需向对应节点的线段树中的$O(\log n)$个点连边即可。为了保证连边关系不发生混乱,线段树需要进行可持久化。这样建图,点数和边数都是$O(n\log n)$级别的,再求出强连通分量,用排列组合求出答... 阅读全文
posted @ 2015-08-23 19:10 Claris 阅读(378) 评论(0) 推荐(0) 编辑