POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
http://poj.org/problem?id=2240
用log化乘法为加法找正圈
c++ 110ms,g++tle
- #include <string>
- #include <map>
- #include <iostream>
- #include <cmath>
- #include <cstring>
- #include <queue>
- using namespace std;
- const int maxn = 50;
- bool vis[maxn];
- double chg[maxn][maxn];
- double dis[maxn];
- int e[maxn][maxn],deg[maxn];
- map<string,int> idmp;
- int n,m;
- const double inf = 0x3fffffff;
- queue<int> que;
- bool hasloop(int s){
- while(!que.empty())que.pop();
- que.push(s);
- vis[s] = true;
- int cnt = 0;
- while(!que.empty()){
- cnt ++;
- s = que.front();que.pop();vis[s] = false;
- for(int i = 0;i < deg[s];i++)
- {
- int t = e[s][i];
- if(dis[t] < dis[s] + chg[s][t])
- {
- dis[t] = dis[s] + chg[s][t];
- que.push(t);
- vis[t] = true;
- }
- }
- if(cnt > n * n)return true;
- }
- return false;
- }
- int main(){
- int ti = 0;
- while(cin>>n && n && ++ti){
- idmp.clear();
- for(int i = 0;i < n;i++)
- {
- dis[i] = -inf;
- for(int j = 0;j < n;j++)chg[i][j] = -inf;
- }
- memset(vis,false,sizeof vis);
- memset(deg,0,sizeof deg);
- for(int i = 0;i < n;i++)
- {
- string tmp;
- cin>>tmp;
- idmp[tmp] = i;
- }
- cin>>m;
- for(int i = 0;i < m;i++)
- {
- string sf,st;
- double change;
- cin>>sf>>change>>st;
- change = log(change);
- int f = idmp[sf];
- int t = idmp[st];
- chg[f][t] = change;
- e[f][deg[f]++] = t;
- }
- bool fl = false;
- for(int i = 0;i < n;i++)
- {
- if(dis[i] == -inf){
- dis[i] = 1;
- if(hasloop(i)){
- fl = true;
- break;
- }
- }
- }
- cout << "Case " << ti << ": ";
- if(fl)cout << "Yes" <<endl;
- else cout << "No" << endl;
- }
- return 0;
- }
POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0的更多相关文章
- 最短路(Floyd_Warshall) POJ 2240 Arbitrage
题目传送门 /* 最短路:Floyd模板题 只要把+改为*就ok了,热闹后判断d[i][i]是否大于1 文件输入的ONLINE_JUDGE少写了个_,WA了N遍:) */ #include <c ...
- POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环)
POJ 2240 Arbitrage / ZOJ 1092 Arbitrage / HDU 1217 Arbitrage / SPOJ Arbitrage(图论,环) Description Arbi ...
- 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 2449(A*求第K短路)
题目链接:http://poj.org/problem?id=2449 思路:我们可以定义g[x]为源点到当前点的距离,h[x]为当前点到目标节点的最短距离,显然有h[x]<=h*[x](h*[ ...
- POJ 1562 && ZOJ 1709 Oil Deposits(简单DFS)
题目链接 题意 : 问一个m×n的矩形中,有多少个pocket,如果两块油田相连(上下左右或者对角连着也算),就算一个pocket . 思路 : 写好8个方向搜就可以了,每次找的时候可以先把那个点直接 ...
- POJ 3076 / ZOJ 3122 Sudoku(DLX)
Description A Sudoku grid is a 16x16 grid of cells grouped in sixteen 4x4 squares, where some cells ...
- poj 3100 (zoj 2818)||ZOJ 2829 ||ZOJ 1938 (poj 2249)
水题三题: 1.给你B和N,求个整数A使得A^n最接近B 2. 输出第N个能被3或者5整除的数 3.给你整数n和k,让你求组合数c(n,k) 1.poj 3100 (zoj 2818) Root of ...
- POJ - 1062 昂贵的聘礼(最短路Dijkstra)
昂贵的聘礼 Time Limit: 1000MS Memory Limit: 10000KB 64bit IO Format: %I64d & %I64u SubmitStatus Descr ...
随机推荐
- HDU5785 manacher+差分数组
用manacher算法O(n)求出所有的回文半径.有了回文半径后,就可以求出L[i]表示以i结尾的回文串的起始位置的和R[i]表示以i起始的回文串的结尾位置的和,然后就可以求出答案了,这里要注意奇偶长 ...
- 高处胜寒 php中奖概率算法,可用于刮刮卡,大转盘等抽奖算法
<?php /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一 ...
- phpStorm如何在Console控制台执行php文本,而不是浏览器中
如何在Console控制台执行php文本 phpStorm默认会在浏览器中执行脚本 默认的配置 配置PHP脚本 扩展,配置项目运行
- datatables使用
//4.多列排序 //示例:http://www.guoxk.com/html/DataTables/Multi-column-sorting.html //5.隐藏某些列 $(document).r ...
- 使用Mozilla Firefox插件RestClient测试Http API接口
RESTClient是Mozilla Firefox一个用于测试http请求插件.在火狐附加组件里面查询并安装,非常小巧,界面非常简单,使用非常的方便,看下面这张图你就全明白了,希望对新手有帮助! 1 ...
- about shell
摘抄 cat 等 cat主要有三大功能:1.一次显示整个文件.$ cat filename2.从键盘创建一个文件.$ cat > filename只能创建新文件,不能编辑已有文件.3.将 ...
- 【服务器环境搭建-Centos】Nginx1.9.9 配置启用 --待续
1.worker_processes worker_processes 4;## 4核,所以设置4个 worker_cpu_affinity 0001 0010 0100 1000; nginx在启动 ...
- Android控件之EditText(输入文本框控件)
一.EditText控件概述 EditText是一个非常重要的组件,可以说他是用户和Android应用进行数据传输窗口 有了他就等于有了一扇和Android应用传输的门,通过他用户可以把数据传输给A ...
- 5.3.1 新建Java工程和类
1.新建工程 (1)打开Eclipse,选择工作区域 (2)选择“File”->“New”->“Java Project”命令,新建工程. (3)在弹出的新建工程对话框中,输入Projec ...
- VBA中find的一些使用方法
用excel处理数据的时候,无论是使用VBA还是函数,查找和引用都是两大主要的工作,VBA中的find系列的方法(find.findnext.Range.FindPrevious)返回range对象, ...