POJ 2240 - SPFA - 正权环(最大路)
来源:互联网 发布:淘宝最牛b卖家拉杆箱 编辑:程序博客网 时间:2024/05/02 02:47
1.Question:
输入n代表有n个国家
之后的n行代表n个国家的名称
输入m代表有向边的个数
之后的代表我们国家货币之间的汇率
现在求,是否存在一条回路是的我们的交换货币之后原本的货币量增多
2.Solution:
本题是标准的判断回路的问题,我们需要将最短路的标准思路转变一下,首先,本题我们需要找到的是正权回路不是负权回路,我们只需要改变一下松弛策略就好,我们只要将松弛策略改成放大策略就ok,判断点进入队列的次数书否超过点数(这里有个问题,等于可以吗)
当然我们的Floyed算法也是可以的,我们的Floyed算法只需要判断我们的是否出现最后是否货币量比1大就好了
3.Code:
/*Problem: 2240User: lantianheyeqiMemory: 376KTime: 47MSLanguage: C++Result: Accepted*/#include"iostream"#include"cstring"#include"cstdio"#include"cstdlib"#define N 35using namespace std;double dis[N];double map[N][N];int n,m;char nation[35][500];int find(char data[]){for(int i=1;i<=n;i++){if(strcmp(nation[i],data)==0) return i;}}bool SPFA(){memset(dis,0,sizeof(dis));int queue[N*N*N];int head=1;int tail=2;int num[N];memset(num,0,sizeof(num));bool book[N];memset(book,0,sizeof(book));queue[1]=1;book[1]=1;dis[1]=1;num[1]=1;while(head!=tail){for(int i=1;i<=n;i++){if(dis[i] < dis[queue[head]]*map[queue[head]][i]){dis[i] = dis[queue[head]]*map[queue[head]][i];if(book[i] == 0){book[i]=1;queue[tail++]=i;num[i]++;if(num[i] > n) return true;}}}book[queue[head]]=0;head++;}return false;}int main(){int t=1;while(scanf("%d",&n)&&n!=0){memset(map,0,sizeof(map));for(int i=1;i<=n;i++) scanf("%s",nation[i]);scanf("%d",&m);double edge;char n1[500];char n2[500];int flag=0;for(int i=1;i<=m;i++) {scanf("%s %lf %s",n1,&edge,n2);int index1 = find(n1); int index2 = find(n2); map[index1][index2] = edge ; if(index1 == index2 && edge > 1) { printf("Case %d: Yes\n",t++); flag=1; break; }}if(flag == 1) continue;bool judge = SPFA();if(judge) printf("Case %d: Yes\n",t++);else printf("Case %d: No\n",t++);}return 0;}
0 0
- POJ 2240 - SPFA - 正权环(最大路)
- hdu1224 spfa 最大路
- zoj3010The Lamp Game(状态压缩+SPFA求最大路)经典
- poj-2240-Arbitrage-spfa-最短路
- poj 2240 Arbitrage 最短路变形 spfa
- poj 3268 (最短路 spfa)
- HDU1317 变形SPFA 求最大路 判断正环 点权替代边权 最短路求法灵活应用
- POJ 1511 Invitation Cards 求来回最短路(spfa)
- poj 1860 Currency Exchange (最短路变形-spfa)
- poj 3259 Wormholes (spfa求最短路)
- POJ 3259 Wormholes (图论---最短路 Bellman-Ford || SPFA)
- POJ 1860 & ZOJ 1544 Currency Exchange(最短路SPFA)
- POJ 1860 Currency Exchange 最短路 BF & SPFA(bfs)
- POJ 1511 Invitation Cards(spfa最短路)
- POJ 3159 Candies(spfa最短路,差分约束)
- POJ 3013 Big Christmas Tree (SPFA最短路)
- POJ 2263 Heavy Cargo (SPFA+Dijkstra,最短路变形)
- 【POJ 3259】Wormholes(最短路SPFA/Bellman_Ford)
- 麦思倍斯对意大利留学系列问题的解答汇总
- Android技术博客
- 前端资源集合
- Android APP启动时出现白屏或者黑屏怎么办?
- Fortran中function,subroutine, interface和module的简单使用
- POJ 2240 - SPFA - 正权环(最大路)
- 设计模式之责任链模式
- Network Group
- C语言错误处理
- Makefile 中$@ $^ $< 解释
- Junit & Jmeter & Selenium 配置注意事项
- PL/SQL Developer_如何快速获得表名或全部列名的文本形式
- 谷歌浏览器chrom兼容问题
- 一个DVD的小代码