poj2240(Arbitrage)

题目大意:

给你各国的货币名称,和国家与国家之间兑换的汇率,问你通过一系列的兑换能否是自己的财富增加。

解题思路:

先建图,因为给的是字符串不是阿拉伯数之间的联系,所以建图可以用map<string,int>mp 建图。赋值给结构体中的u,v。然后利用bellman—ford算法,因为如果财富能够通过兑换增值说明会有一条正权回路。所以利用bellman—ford算法 判断是否出现正权回路说明可以增值否则NO。

代码:

#include <algorithm>
#include <iostream>
#include <sstream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <string>
#include <bitset>
#include <vector>
#include <queue>
#include <stack>
#include <cmath>
#include <list>
#include <map>
#include <set>
using namespace std;
/***************************************/
#define ll long long
#define int64 __int64
/***************************************/
const int INF = 0x7f7f7f7f;
const double eps = 1e-8;
const double PIE=acos(-1.0);
const int dx[]= {0,-1,0,1};
const int dy[]= {1,0,-1,0};
const int fx[]= {-1,-1,-1,0,0,1,1,1};
const int fy[]= {-1,0,1,-1,1,-1,0,1};
/***************************************/
void openfile()
{
    freopen("data.in","rb",stdin);
    freopen("data.out","wb",stdout);
}
/**********************华丽丽的分割线,以上为模板部分*****************/
const int MAX=-1;
#define N 1000
int t,edgenum;
double w;
typedef struct Edge
{
    int u,v;
    double cost;
} Edge;
Edge edge[N];
double dis[N];
bool Bellman_ford()
{
    int i,j;
    for(i=1;i<=t;i++)
        dis[i]=MAX;
    dis[1]=1;
    for(i=1;i<=t-1;i++)
       for(j=1;j<=edgenum;j++)
           if (dis[edge[j].v]<dis[edge[j].u]*edge[j].cost)
                dis[edge[j].v]=dis[edge[j].u]*edge[j].cost;
    int flag=0;
    for(i=1;i<=edgenum;i++)
        if (dis[edge[i].v]<dis[edge[i].u]*edge[i].cost)
        {
            flag=1;
            break;
        }
    return flag;
}
int main()
{
    int cas=0;
    while(scanf("%d",&t)&&t)
    {
        map<string,int>mp;
        char a[50],b[50];
        int i,j;
        int num=0;
        for(i=0;i<t;i++)
            scanf("%s",a);
        scanf("%d",&edgenum);
        for(i=1;i<=edgenum;i++)
        {
            scanf("%s %lf %s",a,&w,b);
            if (mp[a]==0)
                mp[a]=++num;
            if (mp[b]==0)
                mp[b]=++num;
            edge[i].u=mp[a];
            edge[i].v=mp[b];
            edge[i].cost=w;
        }
        if (Bellman_ford())
            printf("Case %d: Yes\n",++cas);
        else
            printf("Case %d: No\n",++cas);
    }
    return 0;
}

poj2240(Arbitrage)

时间: 2024-08-29 07:32:18

poj2240(Arbitrage)的相关文章

追踪高频交易——华尔街猎狼者(下)

2011年5月,Katsuyama团队的成员,Ronan Ryan.Rob Park等人围坐在一桌,周围堆满了<华尔街日报>主办的“科技创新奖”历届获奖者材料.加拿大皇家银行的市场部门在该奖截止前几天通知他们,建议他们将研究成果拿去参赛.于是他们正冥思苦想,看看自己以哪种类型的成果报名,才能让Thor一鸣惊人.但几经考虑后,Park发现:“没有适合我们类别的奖项.” Katsuyama也表示:“这很尴尬.我们似乎不适合任何一类奖,我觉得我们只能申请‘其他’类奖项了.” 大家迷茫了一阵后,Par

【转载】夜深人静写算法(四)——差分约束

[转载]夜深人静写算法(四) - 差分约束  目录     一.引例       1.一类不等式组的解   二.最短路       1.Dijkstra       2.图的存储       3.链式前向星       4.Dijkstra + 优先队列       5.Bellman-Ford       6.SPFA       7.Floyd-Warshall   三.差分约束        1.数形结合        2.三角不等式        3.解的存在性        4.最大值

(转载)ACM训练计划,先过一遍基础再按此拼搏吧!!!!

ACM大量习题题库 ACM大量习题题库 现在网上有许多题库,大多是可以在线评测,所以叫做Online Judge.除了USACO是为IOI准备外,其余几乎全部是大学的ACM竞赛题库. USACO http://ace.delos.com/usacogate 美国著名在线题库,专门为信息学竞赛选手准备 TJU http://acm.tongji.edu.cn/ 同济大学在线题库,唯一的中文题库,适合NOIP选手 ZJU http://acm.zju.edu.cn/ 浙江大学在线题库 JLU htt

POJ题目(转)

http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html 初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:     (

牛人的ACM经验 (转)

一:知识点 数据结构: 1,单,双链表及循环链表 2,树的表示与存储,二叉树(概念,遍历)二叉树的 应用(二叉排序树,判定树,博弈树,解答树等) 3,文件操作(从文本文件中读入数据并输出到文本文 件中) 4,图(基本概念,存储结构,图的运算) 数学知识 1,离散数学知识的应用(如排列组合.简单的图论,数 理逻辑) 2,数论知识 3,线性代数 4,组合代数 5,计算几何 二 算法 1,排序算法(冒抛法,插入排序,合并排序,快速排 序,堆排序) 2,查找(顺序查找,二分发) 3,回溯算法 4,递归算

POJ题目分类(转)

初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:     (1)图的深度优先遍历和广度优先遍历.     (2)最短路径算法(dijkstra,bellman-ford,floyd,hea

使用 IDEA 创建 Maven Web 项目 (异常)- Disconnected from the target VM, address: &#39;127.0.0.1:59770&#39;, transport: &#39;socket&#39;

运行环境: JDK 版本:1.8 Maven 版本:apache-maven-3.3.3 IDEA 版本:14 maven-jetty-plugin 配置: <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <configuration> <webAppSourceDirectory>${pro

在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏)

在深圳有娃的家长必须要懂的社保少儿医保,不然亏大了!(收藏) 转载2016-07-26 17:21:47 标签:深圳少儿医保社保医疗保险住院 在深圳工作或生活的家长们可能还有人不清楚,其实小孩子最大的基础保障福利就是少儿医保.如果以前没重视关注的,现在您看到这篇文章还来得及!少儿医保每年政府财政补贴384元,自己只需交200元左右,就可以享受门诊报销1000元,住院报销比例90%,最高报销额度达148万,大病门诊最高报销比例90%!如何享受?有哪些待遇?接下来就详细来做一个介绍: 少儿医保投保需

彻底解决_OBJC_CLASS_$_某文件名&quot;, referenced from:问题(转)

最近在使用静态库时,总是出现这个问题.下面总结一下我得解决方法: 1. .m文件没有导入   在Build Phases里的Compile Sources 中添加报错的文件 2. .framework文件没有导入静态库编译时往往需要一些库的支持,查看你是否有没有导入的库文件同样是在Build Phases里的Link Binary With Libraries中添加 3. 重复编译,可能你之前复制过两个地方,在这里添加过两次,删除时系统没有默认删除编译引用地址在Build Settings里搜索