poj2240Arbitrage最长路

  今天下午的痛。  很冲的和 Gxwar 说来题爽爽 ,然后就被这水题爽了一下午。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <climits>
#include <string>
#include <iostream>
#include <map>
#include <cstdlib>
#include <list>
#include <set>
#include <queue>
#include <stack>
using namespace std;
const double INF=10000000;
double Map[44][44];
double dis[44];
int vis[100];
int cnt[100];
int n;
int spfa(int x)
{
    memset(cnt,0,sizeof(cnt));
    for(int i =0 ;i<n;i++)
        dis[i]=0;
    dis[x]=1;vis[x]=1;
    memset(vis,0,sizeof(vis));
    queue<int> q;
    q.push(x);
    while(!q.empty()){
        int cur=q.front() ;q.pop();
        if(cnt[cur]>=n) return 1;
        vis[cur]=0;
        for(int i =0 ;i<n;i++)
        if(Map[cur][i]){
            if(dis[i]<dis[cur]*Map[cur][i]){
                dis[i]=dis[cur]*Map[cur][i];
                if(!vis[i]){
                    vis[i]=1;
                    cnt[i]++;
                    q.push(i);
                }
            }
        }
    }
    return 0;
}

int main()
{
    string a,c;double b;
    int m;
    int Icase=0;
    map<string ,int>  str;
    while(cin>>n,n){

        for(int i=0;i<n;i++){
            cin>>a; str[a]=i;
        }
        scanf("%d",&m);
        for(int i =0;i<n;i++)
            for(int j=0;j<n;j++)
            Map[i][j]=0;
        for(int i= 0;i< m;i++){
            cin>>a>>b>>c;int t=str[a];int t1=str[c];
            Map[t][t1]=b;
        }
        int flag=0;
        for(int i= 0;i<n;i++){
            if(spfa(i)){flag=1;break;};
        }
        printf("Case %d: ",++Icase);
        if(flag) cout<<"Yes"<<endl;
        else cout<<"No"<<endl;
    }
    return 0;
}

poj2240Arbitrage最长路

时间: 2024-10-12 12:09:43

poj2240Arbitrage最长路的相关文章

SDUTOJ 2498 AOE网上的关键路径(最长路)

AOE网上的关键路径 Time Limit: 1000MS Memory limit: 65536K 题目描述 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图. AOE(Activity On Edge)网:顾名思义,用边表示活动的网,当然它也是DAG.与AOV不同,活动都表示在了边上,如下图所示: 如上所示,共有11项活动(11条边),9个事件(9个顶点).整个工程只有一个开始点和一个完成点.即只有一个入度为零的点(源点)和只有一个出度为零的点(汇点)

P1807 最长路_NOI导刊2010提高(07)

P1807 最长路_NOI导刊2010提高(07) 题目描述 设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i < j.设w(i,j)为边的长度,请设计算法,计算图G中<1,n>间的最长路径. 输入输出格式 输入格式: 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边,边的长度为v). 输出格式: 输出文件longest.out,一个整数,即1到n之间的最长路径.如

简单Dp----最长公共子序列,DAG最长路,简单区间DP等

/* uva 111 * 题意: * 顺序有变化的最长公共子序列: * 模板: */ #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int a[100]; int mu[100]; int Dp[100][100]; int main() { int n,x; scanf("%d", &n

HDU 3249 Test for job (有向无环图上的最长路,DP)

 解题思路: 求有向无环图上的最长路,简单的动态规划 #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <algorithm> #include <vector> #include <cmath> #define LL long long using namespace std; const int

POJ3592 Instantaneous Transference 强连通+最长路

题目链接: poj3592 题意: 给出一幅n X m的二维地图,每个格子可能是矿区,障碍,或者传送点 用不同的字符表示: 有一辆矿车从地图的左上角(0,0)出发,只能往右走或往下走,或者通过传送点  选择是否 传送到特定地点 采过的矿的格子 矿会消失;问这辆矿车最多能采多少矿 解题思路: 首先重新建图,将图中二维的顶点压缩成一维的顶点             (方便Tarjan算法) 每个顶点往右,下的顶点建边,传送点的格子往特定顶点建边(建边的两端不能有障碍) 得到一幅可能存在环的有向图;

POJ3592 Instantaneous Transference【强连通分量】【最长路】

题目链接: http://poj.org/problem?id=3592 题目大意: 有一个N*M的矩阵地图,矩阵中用了多种字符代表不同的地形,如果是数字X(0~9),则表示 该区域为矿区,有X单位的矿产.如果是"*",则表示该区域为传送点,并且对应唯一一个目标 坐标.如果是"#",,则表示该区域为山区,矿车不能进入.现在矿车的出发点在坐标(0,0)点. 并且(0,0)点一定不是"#"区域.矿车只能向右走.向下走或是遇到传送点的时候可以传送到 指

Hdu 3696 Farm Game(最长路)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3696 思路:每种商品可以直接卖掉,也可以换购后卖掉.所以设点n+1,从该点向每个商品连边权值为log(p[i])(将乘法转换为加法,直接使用SPFA)表示直接卖掉的单位价值:对于可以换购的商品 i-->j,连 j--> i 权值为log(b[j])的边(反向建图,只需求一次最长路),表示单位 i 商品可以转换为b[j] 的 j 商品(求最长路时逐步累乘转换率).求n+1点到各点的最长路,dist[

【连通图|强连通分量+最长路】POJ-3592 Instantaneous Transference

Instantaneous Transference Time Limit: 5000MS Memory Limit: 65536K Description It was long ago when we played the game Red Alert. There is a magic function for the game objects which is called instantaneous transfer. When an object uses this magic fu

HihoCoder #1050 树中的最长路

#1050 : 树中的最长路 Time Limit:10000ms Case Time Limit:1000ms Memory Limit:256MB 描述 上回说到,小Ho得到了一棵二叉树玩具,这个玩具是由小球和木棍连接起来的,而在拆拼它的过程中,小Ho发现他不仅仅可以拼凑成一棵二叉树!还可以拼凑成一棵多叉树——好吧,其实就是更为平常的树而已. 但是不管怎么说,小Ho喜爱的玩具又升级换代了,于是他更加爱不释手(其实说起来小球和木棍有什么好玩的是吧= =).小Ho手中的这棵玩具树现在由N个小球和