codeforces567E. President and Roads】的更多相关文章

题目大意:总统要回家,会经过一些街道,每条街道都是单向的并且拥有权值.现在,为了让总统更好的回家,要对每一条街道进行操作:1)如果该街道一定在最短路上,则输出“YES”.2)如果该街道修理过后,该边所在的最短路可以取代原先的最短路,则输出“CAN x”,x是修改该街道的花费,就是权值减小的值.3)如果该街道是一条不连通的街道,或者修改过后权值小于等于0,则输出“NO”. 解题思路:正向取边,求一次最短路得到d1[], 然后反向取边,再求一次最短路得到d2[].接着开始判断每一条边是否在最短路上.…
E. President and RoadsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/567/problem/E Description Berland has n cities, the capital is located in city s, and the historic home town of the President is in city t (s ≠ t). The c…
Description Berland has n cities, the capital is located in city s, and the historic home town of the President is in city t (s ≠ t). The cities are connected by one-way roads, the travel time for each of the road is a positive integer. Once a year t…
题目链接: http://codeforces.com/contest/567/problem/E 题意: 给你一个带重边的图,求三类边: 在最短路构成的DAG图中,哪些边是必须经过的: 其他的(包括不在DAG上的边)不是必须经过的边把权值改小多少才能通过, 或者根本不可能通过的. 题解: 从起点s跑一遍最短路得到d[maxn],从终点t跑一遍最短路得到d2[maxn],对于边(u,v,w),如果d[u]+d2[v]+w==d[t]那么这条边在最短路上,对于不在最短路上的边,如果d[u]+d2[…
题目链接 \(Description\) 给定一张有向图,求哪些边一定在最短路上.对于不一定在最短路上的边,输出最少需要将其边权改变多少,才能使其一定在最短路上(边权必须为正,若仍不行输出NO). \(Solution\) 正反跑两遍Dijkstra.一条边\((u,v,w)\)在最短路上当且仅当\(dis[S][u]+dis[v][T]+w=dis[S][T]\). 一定在最短路上则满足,从\(S\)走最短路到\(u\)的方案数 * 从\(v\)走最短路到\(T\)的方案数 = 从\(S\)到…
题意 题目链接 给出一张有向图,以及起点终点,判断每条边的状态: 是否一定在最短路上,是的话输出'YES' 如果不在最短路上,最少减去多少权值会使其在最短路上,如果减去后的权值\(< 1\),输出'NO',否则输出'CAN + 花费' Sol 考察对最短路的理解. 首先确定哪些边一定在最短路上,一个条件是 从起点到该点的最短路 + 边权 + 从该点到终点的最短路 = 从起点到终点的最短路 同时还要满足没有别的边可以代替这条边,可以用Tarjan求一下桥.当然也可以直接用最短路条数判 这样的话正反…
\(\color{#0066ff}{ 题目描述 }\) 给出一个有向图,从起点走到终点(必须走最短路),问一条边是否一定会被经过,如果不经过它,可以减小它的多少边权使得经过它(边权不能减少到0) \(\color{#0066ff}{输入格式}\) 第一行包含四个整数n,m,s和t(\(2 \leq n \leq 10^5; 1 \leq m \leq 10^5,1 \leq s, t \leq n\)) -在BERLAND城市,道路的数量,首都和总统家乡(s  ≠  t). 接下来的m条线路包含…
图给得很良心,一个s到t的有向图,权值至少为1,求出最短路,如果是一定经过的边,输出"YES",如果可以通过修改权值,保证一定经过这条边,输出"CAN",并且输出最小修改值,否则输出"NO".保证有s到t的路径,可能有重边. 建正反两个图,分别求出s和t的最短路径,用来判断一条边是不是在最短路径上,然后把最短路径取出来建一个图求割边. 不要用spfa,最坏O(VE),(出卡spfa数据的方法:Hard Test),会TLE 109(数据好啊),自…
给出一个有向图,从起点走到终点(必须走最短路),问一条边是否一定会被经过,如果不经过它,可以减小它的多少边权使得经过它(边权不能减少到0) 正反向建图,分别求出起点到每个点的最短距离,终点到每个点的最短距离(用这个可以算出减小的边权) 再将在最短路径上的边重新建图.求出里面的桥,就是必须经过的边 wa了一上午------呜呜呜呜 先wa 19  是因为求桥的时候是无向图,数组开小了一半 然后 wa 46 ,是因为dis[]数组初始化为 1 << 30 -1 ,应该再开大点 ,开成 1 <…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 处理出起点到任意点的最短路以及最短路条数=>dis[0][i],cnt[0][i] 然后 把所有的边反向 处理出在反图上终点到任意点的最短路以及最短路条数=>dis[1][i],cnt[1][i] dis数组的初值为-1,表示无穷大 设起点到终点的最短路为mini 起点到终点的最短路条数为minicnt 对于每一条边(x,y,z) 如果dis[0][x]==-1 || dis[1][y]==-1代表x或者y不能到达起点或终点…