和hdu有一题差不多。给的是损失比,1-c%就是保存了多少,找出最大的保存率即可。

#include<stdio.h>
#include<iostream>
#include<string.h>
#include<queue>
using namespace std;
#define inf 99999999
#define maxn 50010
#define maxm maxn*51
int n,e,head[maxn],pre[maxm],nex[maxm];
double cost[maxm],dis[maxn];
bool vis[maxn];
queue<int> q;
void add(int u,int v,double c)
{
pre[e]=v;
nex[e]=head[u];
cost[e]=c;
head[u]=e++;
}
double spfa(int st,int end)
{
memset(dis,,sizeof(dis));
dis[st]=;
q.push(st);
while(!q.empty())
{
int u=q.front();
vis[u]=;
q.pop();
for(int i=head[u];i!=-;i=nex[i])
if(dis[pre[i]]<dis[u]*(-cost[i]))
{
dis[pre[i]]=dis[u]*(-cost[i]);
if(!vis[pre[i]])
{
q.push(pre[i]);
vis[pre[i]]=;
}
}
}
return dis[end];
}
int main()
{
while(scanf("%d",&n)!=EOF)
{
e=;
memset(head,-,sizeof(head));
for(int i=;i<=n;i++)
{
int m;
scanf("%d",&m);
for(int j=;j<m;j++)
{
int u,c;
scanf("%d%d",&u,&c);
add(i,u,c*1.0/);
}
}
int st,end,tot;
scanf("%d%d%d",&st,&end,&tot);
double px=spfa(st,end);
if(px==)
printf("IMPOSSIBLE!\n");
else
printf("%.2f\n",(-px)*tot); }
return ;
}

最新文章

  1. 初识Windows窗体(包括各种控件,属性,方法)
  2. iOS开发之网络编程--1、NSURLSession的基本使用
  3. java读取word内容
  4. ganymedssh2 java执行linux命令
  5. vim配置python开发环境
  6. Python3 IO
  7. php 删除文件夹及文件
  8. Ubuntu16.04LTS安装
  9. Shell中的正则表达式及字符串处理
  10. 技巧收集-W1701
  11. raid制作(转载)
  12. vs调试正确显示utf8格式字符串
  13. 使用ADO.NET查询和操作数据库
  14. 使用 GDB 调试需要命令行参数的程序
  15. Android APP性能测试笔记(一)
  16. easyui中combobox 取值
  17. Java笔记Spring(三)
  18. MYSQL中常用的强制性操作(例如强制索引)
  19. 【本地服务器】利用openssl生成证书
  20. SQL语句之 多表管理

热门文章

  1. [Day2] Nginx静态文件
  2. zepto.js按需载入模板对象
  3. 通过url方式传递中文参数时出现的中文乱码问题的处理
  4. 2018-8-14-Resharper-如何把类里的类移动到其他文件
  5. 2019-8-31-dotnet-如何调试某个文件是哪个代码创建
  6. HDU 3086 马拉车模板
  7. Django项目:CRM(客户关系管理系统)--28--20PerfectCRM实现King_admin数据修改美化
  8. 前端(jQuery)(2)-- JQuery选择器和事件
  9. ajax实例解析
  10. go语言:获取字符串长度