2013年8月15日

POJ_2240_Arbitrage(Floyd 算法)

摘要: /*题意:求自身到自身的最大转换率。最简单的方法就是floryd算法变形,求最大路径后,求最大环,看它是否满足条件。每一个结点都必须有到自身的环(不甚清楚原因)如果操作中含环的话,环记录的1,即代表原始钱数。操作完之后就改变成增值后的钱数。如果操作中不含环,那么就跟平时的Floyd算法一样记录的是两个点之间最大的交换率。*/下面给出两种代码。代码一:Floyd 1 # include 2 # include 3 # define inf 10000 4 double map[1005][1005]; 5 int n,m; 6 void Floyd() 7 { 8 int i,j,k... 阅读全文

posted @ 2013-08-15 20:52 随风浪子的博客 阅读(167) 评论(0) 推荐(0) 编辑

POJ_1125_Stockbroker Grapevine(最短路径 Floyd算法)

摘要: /*从每一个点向外扩散,如果两点i,j有多条路径可达记录更新e[i][j]i到j的最短路径如果不可达则e[i][j]=inf.因此在最后遍历的时候,如果每一个点都有不可达的点那么就输出disjoint。注意简介可达的点也是可达的。因为已经赋值了。所以便利的时候只要找这些。。。*/ 1 # include 2 # include 3 const int inf=1e[i][k]+e[k][j]) //i!=j是因为无向图的顶点(一般)不存在环 14 e[i][j]=e[i][k]+e[k][j];15 }16 int f... 阅读全文

posted @ 2013-08-15 17:26 随风浪子的博客 阅读(110) 评论(0) 推荐(0) 编辑

POJ_2253_Frogger(Floyd 两点间最短路径算法)

摘要: http://poj.org/problem?id=2253/*题目大意:有一只青蛙想跳到另一只青蛙那里去,有很多点可以从1点跳到2点;那么就形成很多跳跃路径在这些路径当中存在两点他们的距离最大,题目中称作frog distance计算这些frog distance当中最小的那一个。Floyd 算法简单的应用,看看Floyd算法就会了。Floyd 算法的主要思想就是:在i到j的路径中,我k从1-n开始。如果i-k + k-j要比i-j优化的话那么更新i-j为 i-k与k-j的和、积、最大值、最小值。具体情况看题目。*/ 1 # include 2 # include 3 # include.. 阅读全文

posted @ 2013-08-15 16:02 随风浪子的博客 阅读(130) 评论(0) 推荐(0) 编辑

POJ_1062_昂贵的聘礼(最短路)

摘要: /*这道题关键是解决怎么存储的问题和那个等级限制的处理。把物品看成是N个点N个点的d[]初始值便是他们的价值。map[i][j];代表物品i和物品j进行交换需要的钱数。dijkstra算法:每次选择d值最小的节点x;具体解释见代码。*/# i 1 # include 2 # include 3 # define inf 100000000 4 int map[110][110]; //map[i][j]代表物品i与j交换的钱数; 5 int value[110],level[110];//物品的价值,等级水平。 6 int n,m,vis[110]; //vi... 阅读全文

posted @ 2013-08-15 11:20 随风浪子的博客 阅读(94) 评论(0) 推荐(0) 编辑

导航