bzoj2725】的更多相关文章

2725: [Violet 6]故乡的梦 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 502  Solved: 173[Submit][Status][Discuss] Description Input Output Sample Input 6 7 1 2 1 2 3 1 3 4 2 4 5 1 5 6 1 1 3 3 4 6 3 1 6 4 1 2 1 3 4 3 6 5 Sample Output 7 6 Infinity 7 HINT…
如果S==T,那么答案为0. 如果S与T不连通,那么答案为inf. 否则,S到T的最短路径上至少有一条边. 求出以S为源点的最短路图,是个DAG,随便抓一条S到T的最短路,记为P. 设dpS[x]表示在这个图上,能到达x点的离S最近的在P上的点,可以通过拓扑排序+DP求出. 然后求出以T为源点的最短路图,在T的最短路图里找到P. 设dpT[x]表示在这个图上,能到达x点的离T最近的在P上的点,同样可以通过拓扑排序+DP求出. 然后把P路径上的边按S到T的方向,从1开始标号. 对于一条边,如果不在…
* 给出一张图 * 每次删掉一条边后求 the shortest path from S to T * 线段树维护最短路径树 * 具体维护从某点开始偏离最短路而到达 T 的最小距离 * 首先记录下最短路径 * 考虑每一种走法都是 S -> a -> x -> y -> b -> T, 其中 S -> a, b -> T 是最短路上的边 * 把树上的点i能以最短路到达的点标记上Id[i],每个点只标记第一次 * 枚举所有的边 * 对于边(u,v),若u从起点标记到的…
/* * 此题同bzoj2725 * 增加了枚举边的操作 */ #include <bits/stdc++.h> ;// oo = 999999999; #define LL long long const LL oo = 9e18; int n, m, S, T; int Short_path[N], Snum[N], Tnum[N], Id[N], path_js; bool vis[N]; int head[N], now; ]; LL dis_s[N], dis_t[N]; LL Mi…