![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM--最短路
布呗之路
每个人都有不同的路,所以每个人都会孤独。
展开
-
POJ - 1797 Heavy Transportation
/*题意就是说从1-n的所有通路中找到一个最大载重量;运用dijkstar算法进行松弛操作,就是每次找到最大边然后不断的更新;*/#include<cstdio>#include<cmath>#include<cstring>using namespace std;int Minn(int a,int b) { return (a<b)?a:b;}int Maxx(int a,int原创 2017-11-17 13:32:22 · 192 阅读 · 0 评论 -
POJ - 2502 SUBWAY(FLOYD算法求解最短路)
/*题意就是求去学校所花最短时间,在每一段距离中我们可以选择步行也可以选择坐地铁,因为有些路可能没有地铁,所以我们需要选择最佳路径输入家和学校的坐标;然后再给出你地铁的坐标,这个就是卡你的输入了,因为它那个每次走到-1 -1 的时候呢它的第一个节点是不能读取的,因为只有相邻的两个节点,它才会有距离感。这个后续解释;那么咋们应该怎么solve it?首选dijkstra,因为它的地铁站点一原创 2017-11-23 11:06:53 · 307 阅读 · 0 评论 -
POJ - 1062 昂贵的聘礼 (等级限制,过程部分最优得到结果最优,SPFA)
/**题意:一个人它需要获得一件物品,但是呢他现在的钱不是很够,所以呢它可以进行周转得到更多的金币,那么它应该怎么做呢?所谓周转就是用金币换 或者以物换物,因为同一件商品在不同的人里面它的价值可能是不一样的,所以它需要通过花最少的钱来获得该物品所需的费用;(因为它开始买东西也是需要费用的);这个题目呢主要卡的就是你的等级限制;所以呢咋们就需要找到它的所有的等级,因为它会存在重复的情况;原创 2017-11-26 14:04:44 · 239 阅读 · 0 评论 -
POJ - 1502 SPFA
/**题目大意:N个处理器要进行信息传递,处理器i传递信息给自己不需要时间,处理器i与处理器j之间相互传递信息的时间是一样的,不同处理器之间传递信息所需要的时间由一个矩阵的下三角给出。若矩阵对应位置为x,则说明相应的两个处理器之间无法传递信息。求从第一个处理器传递信息到其他所有处理器最少需要多少时间。最少需要多少时间 那么就是看1-n最长的那个需要多少时间;*/#include<cst原创 2017-11-26 00:30:45 · 242 阅读 · 0 评论 -
LightOJ - 1074 Extended Traffic(SPFA判负环)
/*题意:有n个城市,每一个城市有一个拥挤度ai,下面m行数据(a,b)表示的是a,b两个位置同时能够得到a到b所花的时间为(a-b)^3,然后再给q个数据x,问从第一个城市到达第x个城市所花的时间,如果不能到达,或者时间小于3输出?否则输出所花的时间思路;这个题目是存在负环的,所以常规的判别负环是不能够 get over it所以我们可以用SPFA算法来搞一波事情;只要标记的位置访问的次原创 2017-11-24 13:38:44 · 559 阅读 · 0 评论 -
POJ - 3159 Candies (变形的最短路问题)差分约束,栈版本SPFA,前向星建图
/*:flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发。flymouse希望自己分得的糖果数尽量多于snoopy。对于其他小朋友而言,则必须自己得到的糖果不少于班上某某,给出m个关系(A,B,C),B获得的糖果数不能多于A C个问flymouse最多能多snoopy几个糖果。那么这样就形成了一种差分约束B-A<C,变形一下就是 B<A+C,这样原创 2017-11-23 12:26:42 · 287 阅读 · 0 评论 -
POJ - 3259 弗洛伊德判负环
///这个就是判断回路是否存在负环;///然后用一下佛洛依德就出来了;细节如下#include<cstdio>#include<cstring>using namespace std;int mmp[505][505],n,m,k;int floyd(){ int i,j,k; for(k=1;k<=n;k++) for(i=1;i<=n;i++)原创 2017-11-18 00:56:44 · 692 阅读 · 0 评论 -
POJ - 1860 Currency Exchange 判断正环(SPFA,FLOYD)
/*一个人去银行存钱,但是呢,存钱和取钱的汇率是不一样的,所以它想通过存钱使得自己的本金变高,然而事实是在取钱的过程中,需要手续费。这个就很难办了,万一它的手续费很大呢,所以在循环多次的情况下它的钱可能变为一个负数,所以在这里我们的思路就是判断其中是否含有正环就好了;开始的时候,我以为在存钱的时候,循环一圈之后如果得到的钱数比本金大就好了,所以在开头的时候就说了,万一手续费很高呢,所以在循环的原创 2017-11-18 13:59:05 · 383 阅读 · 0 评论 -
POJ - 2240(Arbitrage)弗洛伊德 变形 get最长路
///题意:我们知道每个国家的汇率是不一样的,所以呢我们可以通过不同的交换从中获取牟利,///假设1美元买0.5英镑,1英镑买10法郎,1法郎买0.21美元。///然后,通过转换货币,一个聪明的交易者可以从1美元开始,买入0.5×10×0.21=1.05美元,获利5%。这样的话呢就轻易获利了;///说实话就是说开始的钱的类型和最后的钱类型是一样就行了;(几经周转最后钱数变多,说白了就是说最后汇原创 2017-11-21 15:10:19 · 530 阅读 · 0 评论 -
Layout POJ - 3169 差分约束 SPFA
/**题目大概的意思就是:两个小牛不喜欢对方,每两头牛之间就会产生一些距离感我们需要计算第一头牛和最后一头牛的最大距离;(嫌弃的距离最大)然后呢它给出了每两头牛的最短距离和限制的最大距离,存在两种约束条件,转换一下就变成了最短路;我们可以选择按照前向星建图正向接正和反向接负的方法,然后跑一波SPFA找到最短路;输出的话呢,就是牛不站在一排的话(简单的说就是存在负环),输出-1;牛1和原创 2017-11-30 12:51:24 · 221 阅读 · 0 评论 -
Dijkstra POJ - 2387
/*题意就是说从节点为1走到节点为n的节点花的时间最短;这个题很明显就是最短路的一些知识了,用dijkstra水水的就过去了;然后呢就这个题目来说一下关于我对dijkstra的看法;这个东西呢就是计算单源最短路(从某个点到某一个点的最短时间);这个我们先将源头节点视为0(开始走的时间为0),其余的为inf(无穷);在n次循环中,我们在每一个未标记的节点中,选出达到这个点所花的最小时间的位置,原创 2017-11-14 19:43:42 · 409 阅读 · 0 评论 -
POJ - 3268 Silver Cow Party(两遍dijktsra)
///这个题的意思就是说:一群牛要去指定的一头牛的家里做客,然后呢去的时候的路线和返回的路线可能不一样(有向图的权值不一样),///求到达那头牛家里的时间和返回家里的时间和的最大值;(求里面的某一头 去和回来 时间的最大值;)///因为这个是有向图,所以呢,咋们可以来两遍dijkstra,过去和回来,然后再最后取一个最大值就好了;#include<cstdio>#include<cmath>原创 2017-11-17 18:19:29 · 421 阅读 · 0 评论 -
POJ-1511(SPFA找最短路(正向和反向))
///这个题目有点意思,搞了很久过了的样例,后来发现全部都白做了,一直RE RE ,一首fuck送给题目;///说说这个题目吧,就是求1节点到所给任意节点的最短路径之和ans1,再求任意除1节点外的节点到1节点(反向)的最短距离之和ans2;ans=ans1+ans2;///那为什么我发现全白做了呢,因为我用的是dijkstra,它们给我的节点的个数是1e6,瞬间就傻逼了;///那么这个题就好原创 2017-11-21 17:15:30 · 474 阅读 · 0 评论