![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
最短路
「已注销」
这个作者很懒,什么都没留下…
展开
-
SCU 4444 Travel (完全图 最短路 set )
思路:首先考虑a小于等于b,那么我们只需要跑一边由a边建的图就好了,因为原图是完全图,所以得到的结果和b取最小值就好。 然后考虑a大于b,进行一遍bfs,注意每个点最多计算一次,所以我们可以用两个set集合来标记这个点还能不能用(能用的话用set.count(v)=1来表示),如果此时某个能用的点这次因为有a边而不能用了,那么把这个点放进另一个set:ts,这个集合是下次可以接着用的点。总之卡点是原创 2017-07-30 13:53:48 · 592 阅读 · 0 评论 -
POJ 1125 Stockbroker Grapevine (最短路 floyd)
题意:此题题意远比题目难系列。。。 此题翻译转载自:http://blog.csdn.net/lyy289065406/article/details/6645856 众所周知,证券经纪业依靠的就是过度的传言。您需要想出股票经纪人中传播假情报的方法,让您的雇主在股票市场的占据优势。为了获得最大的效果,你必须蔓延最快的方式谣言。 不幸的是你,股票经纪人信息只信任他们的“可靠来源”,这意味着你在你原创 2016-09-01 19:27:02 · 382 阅读 · 0 评论 -
POJ 3013 Big Christmas Tree (最短路 spfa)
题意:t个样例,v个点,e条边。让你把所有的点都链接起来,并算出这个以1为根的树的重量等于多少。思路: 对于这组样例: 7 7 200 10 20 30 40 50 60 1 2 1 2 3 3 2 4 2 3 5 4 3 7 2 3 6 3 1 5 9 题目中给出的规则是这样的:假设现在咱们要算2这个点的重量,那么我们就需要把2的所有子节点的权值加起来再乘以这条边的权值:(2原创 2016-09-01 18:32:01 · 214 阅读 · 0 评论 -
POJ 3259 Wormholes (spfa判断负权环)
题意:给你一张图,图上有n个点,m条边,w个虫洞。 给你m条边的权值,再给你w个虫洞能回到过去的时间(也就是说是负权的意思)。 问你能不能找到一个环,环上的权值总和是负的。思路:spfa,即bellman-ford的队列优化。 我写的这个是用邻接矩阵存的图,时间上感觉不是特别有效率,然而此题并没有卡这些。AC代码:#include <iostream> #include <cstdio> #i原创 2016-08-30 20:35:23 · 960 阅读 · 0 评论 -
hdu 2680 Choose the best route(spfa/dijkstra)
题意:给你一张 有向图 然后让你求多个起点到一个终点的最短路径 坑点:从x到y可能有多条路。思路:有一个巧妙地办法: 把终点当成起点,构图时反向建图。AC代码(spfa,280ms):#include <iostream> #include <string.h> #include <vector> #include <cstdio> #include <queue>using namespac原创 2016-08-29 21:53:07 · 336 阅读 · 0 评论 -
HDU 2544 最短路(单源最短路 dijkstra / floyd / dijkstra(堆优化)/dijkstra+邻接链表+堆优化)
题意:中文题目大家应该都看得懂。思路:用dijkstra算法寻找最短路。 dijskstra算法的精髓是:一条两顶点间的最短路径包含路径上其他的最短路径。 举个例子:有这么一条1到6的最短路径 1 -> 2 -> 4 -> 6 那么从1到4的最短路则为 1-> 2 -> 4 证明:反证法,假设不是最短路,那么必能找到一条比这个更短的路径,而如果是这样的话,原命题1到6的最短路径就不成立了,由此原创 2016-08-27 21:33:59 · 412 阅读 · 0 评论 -
POJ 1062 昂贵的聘礼 (分段dijkstra)
思路:有题目可知最终1号一定要在交易链中,所有可以通过1号的等级来划分出一些等级区间。 现在假设1号等级为v,等级区间的差为m,那么我们可以知道最终结果一定在 [v−m,v+m]{ [ v-m,v+m ]} 中,但是不能直接用这个区间去判定,因为这个区间长度大于了m,所以我们从 [v−m,v]{[v-m,v]} 开始,for(int i = 0;i <= m;i++){ [v-m+i,v+原创 2017-02-14 14:19:23 · 223 阅读 · 0 评论 -
ZOJ 2760 How Many Shortest Path(floyd + 最大流)
思路:首先用floyd跑出最短路,然后对于每条边判断,dis[j]==dis[i]+<i,j> dis[j] == dis[i]+ <i , j> 满足条件即加到网络中,(i,j,1),求解最大流,即为答案。坑点:注意他给的样例有诈。。 当i等于j的时候需要自己手动置0,而不是指望他给你0。。 靠。因为这个狂wa不止。。#include <iostream> #include <cstdio原创 2017-07-23 16:10:35 · 193 阅读 · 0 评论