POJ 2240 Arbitrage(SPFA+邻接矩阵)
#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<vector>
#include<queue>
using namespace std; const int MAXN=40;
int n,m;
double Vcur[MAXN],R[MAXN][MAXN];
bool vis[MAXN];
int cntNode[MAXN];
char ss[MAXN][100]; bool SPFA(int st)
{
queue<int> que;
int u,v; for(int i=1;i<=n;i++)
Vcur[i]=0,vis[i]=0,cntNode[i]=0;
Vcur[st]=1000.0;vis[st]=1;cntNode[st]=1;
que.push(st); while(!que.empty())
{
u=que.front();que.pop();
vis[u]=0; for(v=1;v<=n;v++)
{
if(Vcur[u]*R[u][v]>Vcur[v])
{
Vcur[v]=Vcur[u]*R[u][v];
if(!vis[v])
{
vis[v]=1;
++cntNode[v];
que.push(v);
if(cntNode[v]>=n)
return true;
}
}
}
}
return false;
} int Find(char s[])
{
for(int i=1;i<=n;i++)
if(strcmp(s,ss[i])==0)
return i;
} int main()
{
int Case=0;
while(scanf("%d",&n)&&n)
{
memset(R,0,sizeof(R));
Case++;
for(int i=1;i<=n;i++)
scanf("%s",ss[i]);
scanf("%d",&m);
while(m--)
{
char s1[100],s2[100];
double rate;
scanf("%s",s1);
scanf("%lf",&rate);
scanf("%s",s2);
int u=Find(s1),v=Find(s2);
R[u][v]=rate;
}
int k;
for(k=1;k<=n;k++)
{
if(SPFA(k))
break;
}
if(k>n) printf("Case %d: No\n",Case);
else printf("Case %d: Yes\n",Case);
}
return 0;
}
POJ 2240 Arbitrage(SPFA+邻接矩阵)的更多相关文章
- POJ 2240 Arbitrage (spfa判环)
Arbitrage Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of ...
- POJ 2240 Arbitrage spfa 判正环
d[i]代表从起点出发可以获得最多的钱数,松弛是d[v]=r*d[u],求最长路,看有没有正环 然后这题输入有毒,千万别用cin 因为是大输入,组数比较多,然后找字符串用strcmp就好,千万不要用m ...
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...
- poj 2240 Arbitrage 题解
Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 21300 Accepted: 9079 Descri ...
- poj 2240 Arbitrage (Floyd)
链接:poj 2240 题意:首先给出N中货币,然后给出了这N种货币之间的兑换的兑换率. 如 USDollar 0.5 BritishPound 表示 :1 USDollar兑换成0.5 Britis ...
- (简单) POJ 2240 Arbitrage,SPFA。
Description Arbitrage is the use of discrepancies in currency exchange rates to transform one unit o ...
- POJ 2240 Arbitrage【Bellman_ford坑】
链接: http://poj.org/problem?id=2240 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=22010#probl ...
- poj 2240 Arbitrage bellman-ford算法
点击打开链接 Arbitrage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13434 Accepted: 5657 ...
随机推荐
- 浙大玉泉ubuntu L2TP VPN连接设置
网络连接设置 1.内网有线 如果是笔记本且只用无线,剩下的就不需要看了.实验室台式机没有无线网卡不得不折腾-- 玉泉有线都是要绑定固定ip的,实验室无需和mac地址绑定,命令如下sudo gedit ...
- web前端入门
看到很多同学在咨询:学习前端该怎么入门啊.推荐一下前端入门书籍啊什么的,作为一个过来人,我想告诉你一些小小技巧,避免走弯路: 1.先敲再学.如果你是零基础,就不要去每个标签,每个属性地去抠,因为里面有 ...
- 免备案速度快最新优惠码,vps评测digitalocean对比vultr和linode
在无数海外vps服务器供应商中,vultr价格便宜,有日本机房不限购,对中国大陆速度友好:linode是经典款,服务器最稳定,内存翻倍,起步就是2GB,性价比高:digitalocean服务器创建速度 ...
- LED的串联电阻值的计算
与LED串联的电阻被用于控制该LED导通时的电流量.为了计算电阻值,你需要知道输入电源电压(Vs,一般为5V),LED的正向电压(Vf)和你需要流过LED的电源(/)的数值. 其电阻欧姆值的计算公式( ...
- Python网络编程学习_Day10
一.进程与线程 1.区别 进程:一个程序要运行时所需要的所有资源的集合,进程是资源的集合. 一个进程至少需要一个线程,这个线程称为主线程 一个进程里面可以有多个线程 两个进程之间的数据是完全独立,不能 ...
- W: http://archive.ubuntukylin.com:10006/ubuntukylin/dists/xenial/InRelease: Signature by key 6CE35A4EBAB676094476BE7CD259B7555E1D3C58 uses weak digest algorithm (SHA1)
新装ubuntukylin 16.04,sudo apt-get update 时遇到如下问题: Hit:1 http://archive.ubuntukylin.com:10006/ubuntu ...
- shell实现四则运算简单方法
在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法.1.简单方法$ b=$((5*5+5-3/2)) $ echo ...
- Java中不定参的使用规则
Java中有时候会使用到不定参数,它的使用规则有2项: 一个方法中只能使用一个不定参数. 不定参数必须是方法中最后一个参数. 不定参数在传入的过程中会行成一个数组传入,如果不会放在最后一个,虚拟机无法 ...
- 解析Properties文件
/** * 传入需要解析的文件属性,传入文件的路径 * @param para 需要获取的属性名称.也就是键值对中的键名称 * @param filepath * @return */ public ...
- RSA算法记录----摘抄
RSA算法原理(一) "公钥加密算法". 因为它是计算机通信安全的基石,保证了加密数据不会被破解.你可以想象一下,信用卡交易被破解的后果. 进入正题之前,我先简单介绍一下,什么 ...