poj1860
来源:互联网 发布:windows update 编辑:程序博客网 时间:2024/05/17 04:47
链接:点击打开链接
题意:钱的种类为N,M条命令,拥有种类为S这类钱的数目为V,命令为将a换成b,剩下的四个数为a对b的汇率和a换成b的税,b对a的汇率和b换成a的税,公式为(钱数-税)*汇率
代码:
#include <iostream>#include <stdio.h>#include <string.h>#include <stdlib.h>#include <queue>#include <algorithm>using namespace std;int n,m,s,vis[105];double w,dis[105],rate[105][105],cate[105][105];int spfa(int s){ int i,j,u; queue<int>q; q.push(s); dis[s]=w;vis[s]=1; while(q.size()){ u=q.front();q.pop(); vis[u]=0; for(i=1;i<=n;i++) if(dis[i]<(dis[u]-cate[u][i])*rate[u][i]){ dis[i]=(dis[u]-cate[u][i])*rate[u][i]; if(dis[s]>w) //已经能够产生利润就不用再更新了 return 1; if(!vis[i]){ q.push(i); vis[i]=1; } } } return 0;} //spfs模板int main(){ int i,j,a,b,temp; double rab,cab,rba,cba; while(cin>>n>>m>>s>>w){ memset(vis,0,sizeof(vis)); memset(dis,0,sizeof(dis)); for(i=1;i<=n;i++) for(j=1;j<=n;j++){ cate[i][j]=0; if(i==j) rate[i][j]=1; //i,j相等时rate是1 else rate[i][j]=0; } for(i=1;i<=m;i++){ cin>>a>>b; cin>>rab>>cab>>rba>>cba; rate[a][b]=rab; cate[a][b]=cab; rate[b][a]=rba; cate[b][a]=cba; } temp=spfa(s); if(temp) printf("YES\n"); else printf("NO\n"); } return 0;}
0 0
- poj1860
- poj1860
- poj1860
- poj1860
- poj1860
- poj1860
- poj1860
- poj1860
- POJ1860
- poj1860
- POJ1860
- poj1860
- POJ1860
- poj1860
- poj1860
- POJ1860
- bellman--poj1860
- POJ1860随感
- 程序员的分级理解
- java的(PO,VO,TO,BO,DAO,POJO)解释
- POJ 1061 青蛙的约会.
- ssdb 主从同步复制配置详细步骤
- 【SSL】SSL工作原理
- poj1860
- Android基础之四层架构
- hadoop实战之HDFS常用JavaAPI
- 1.DB-Mysql++、Mysql的c++封装类的编译
- 虚拟机打电话发短信方法
- hadoop命令大全
- Java自学之路--Java类型、变量与运算符详解
- Linux 时钟处理机制
- 获取ios系统的电池电量比例,是否充电中,是否充满