bzoj4400】的更多相关文章

先传代码再填坑 #include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <cmath> #include <algorithm> #include <vector> #include <queue> #define N 100005 #define M 400005 #define INF 0x7FFF…
首先找出任意一条1-n的最短路径.显然删除的边只有在该最短路上才会对最短路长度产生影响. 不会证明地给出一个找不到反例的结论:删除一条边后,新图中一定有一条1-n的最短路径上存在一条边x->y,满足在原图中1-x的最短路和y-n的最短路上该删除边均不是必经边. 另一个显然的结论是,原图中经过边x->y情况下的最短路一定可以描述为1->l->x->y->r->n,其中l和r是之前找出的最短路上的两个点.因为如果在到达x之前在最短路上反复横跳,不如直接走原最短路.后者…
/* * 此题同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…