POJ 2240 Arbitrage 最短路 Floyd
来源:互联网 发布:ubuntu 16.04 root密码 编辑:程序博客网 时间:2024/06/05 01:58
题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率。如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 BritishPound。问在这N种货币中是否有货币可以经过若干次兑换后,兑换成原来的货币可以使货币量增加。 本题其实是FLOYD的变形。将变换率作为构成图的路径的权重。这儿构成的图是一个有向图。最后将松弛操作变换为:if(dis[i][j]<dis[i][k]*dis[k][j])。
import java.util.*;public class Main { static int c=0; static String[] str; static double[][] map; static double[] v; static int n,m; static boolean[] visited; public static void main(String[] args){ Main p=new Main(); Scanner cin=new Scanner(System.in); while(true){ c++; n=cin.nextInt(); if(n==0) return; str=new String[n]; map=new double[n][n]; v=new double[n]; visited=new boolean[n]; for(int i=0;i< n;i++){ str[i]=cin.next(); map[i][i]=1; } m=cin.nextInt(); for(int i=0;i< m;i++){ String a=cin.next(); double r=cin.nextDouble(); String b=cin.next(); map[p.find(a)][p.find(b)]=r; } p.solve(); } } void solve(){ floyd(map); for(int i=0;i< n;i++){ if(map[i][i]>1){ System.out.println("Case " + c + ": Yes"); return; } } System.out.println("Case " + c + ": No"); } void floyd(double[][] map){ for(int k=0;k < n;k++) for(int i=0;i< n;i++) for(int j=0;j< n;j++) if(map[i][j]< map[i][k]*map[k][j]) map[i][j]=map[i][k]*map[k][j]; } int find(String a){ for(int i=0;i< n;i++) if(a.equals(str[i])) return i; return 0; } }
0 0
- POJ 2240 Arbitrage(最短路 Floyd)
- poj 2240 Arbitrage 【最短路&&floyd】
- POJ 2240Arbitrage(最短路floyd)
- POJ 2240 Arbitrage(Floyd最短路)
- poj 2240 Arbitrage(Floyd最短路)
- POJ 2240 Arbitrage (Floyd最短路变形)
- POJ 2240 Arbitrage 最短路 Floyd
- POJ 2240 Arbitrage(最短路,floyd)
- poj 2240 Arbitrage 最短路
- POJ 2240 Arbitrage(最短路)
- POJ-2240 Arbitrage(最短路)
- 最短路练习9/poj/2240 Arbitrage;正环:floyd或spfa解法;
- poj 2240 Arbitrage(最短路+Bellman-Ford)
- poj-2240-Arbitrage-spfa-最短路
- POJ 2240 Arbitrage(最短路 套汇)
- POJ 2240 Arbitrage(最短路Floyed)
- poj-2240-Arbitrage-最短路 BF
- POJ 2240 Arbitrage(最短路)
- POJ1579简单dp
- MySQL 学习<二> 数据库的基本操作
- string和cstring互转
- Hello world!!
- linux利用文件句柄恢复oracle数据
- POJ 2240 Arbitrage 最短路 Floyd
- Vijos P2010 回文日期【回文+日期计算】
- 字符串与数组和指针
- linux下gdb调试
- 获取当前进程的IAT
- Checkresult(西工大本科生成绩查询APP)项目
- 一个黑科技,天使印记胎儿3D打印算法的推测
- 单片机==日常复习
- 两种方法实现单向链表的创建、遍历、删除、查找、逆序输出(循环法和递归法)