HDU 4318 Contest 2
简单的一题,使用类DIJK的算法就可以了。
#include <iostream>
#include <cstdio>
#include <queue>
#include <algorithm>
using namespace std; struct Edge{
int u,v;
double lose;
int next;
}edge[2500050];
int head[50010]; bool vis[50010];
int tot;
void addedge(int u,int v,double l){
edge[tot].u=u;
edge[tot].v=v;
edge[tot].lose=l;
edge[tot].next=head[u];
head[u]=tot++;
}
double dist[50010];
struct point{
int node;
double power;
bool operator < (const point &p)const {
return power<p.power;
}
}pushed,tmp;
priority_queue<point>que; int main(){
int n,v,l,f,t; double M;
while(scanf("%d",&n)!=EOF){
int k; tot=0;
for(int i=1;i<=n;i++){
head[i]=-1;
vis[i]=false;
dist[i]=0;
}
for(int u=1;u<=n;u++){
scanf("%d",&k);
for(int p=1;p<=k;p++){
scanf("%d%d",&v,&l);
addedge(u,v,l*1.0);
}
}
scanf("%d%d%lf",&f,&t,&M);
tmp.node=f; tmp.power=M;
dist[f]=M;
que.push(tmp);
while(!que.empty()){
tmp=que.top();
if(tmp.node==t) break;
que.pop();
if(vis[tmp.node])
continue;
vis[tmp.node]=true;
for(int e=head[tmp.node];e!=-1;e=edge[e].next){
if(!vis[edge[e].v]){
if(tmp.power*(1-edge[e].lose*1.0/100)>dist[edge[e].v]){
dist[edge[e].v]=tmp.power*(1-edge[e].lose*1.0/100);
pushed.node=edge[e].v; pushed.power=dist[edge[e].v];
que.push(pushed);
}
}
}
}
if(dist[t]<1e-8)
printf("IMPOSSIBLE!\n");
else printf("%.2lf\n",M-dist[t]);
while(!que.empty())
que.pop();
}
return 0;
}
HDU 4318 Contest 2的更多相关文章
- HDU 4318 Power transmission(最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=4318 题意: 给出运输路线,每条路线运输时都会损失一定百分比的量,给定起点.终点和初始运输量,问最后到达终点时最 ...
- HDU 5045 Contest(状压DP)
Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...
- hdu - 5045 - Contest(国家压缩dp)
意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...
- [ACM] hdu 5045 Contest (减少国家Dp)
Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...
- HDU–5988-Coding Contest(最小费用最大流变形)
Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- hdu 5045 Contest(状态压缩DP)
题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...
- HDU 5045 Contest
pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...
- HDU 4335 Contest 4
利用降幂公式..呃,还是自己去搜题解吧.知道降幂公式后,就不难了. #include <iostream> #include <cstdio> #include <alg ...
- HDU 4339 Contest 4
树状数组,主要是抓住要求连续1的个数.这样,初始时,相同的加1,不同的加0. 查询时,用二分搜索右边界.就是比较当前mid-l+1的值与他们之间1的个数(这可以通过树状数组求区间和得出),记录右边界即 ...
随机推荐
- AOP经典2种配置演示样例
第一种: 使用aop指定切面aspect. <bean id="LogAdvice" class="com.thinkmore.framework.monitor. ...
- 【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】
[056-Merge Intervals(区间合并)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a collection of intervals, ...
- Tom和Jerry来了,Tom和Jerry走了——北漂18年(38)
上次讲到跟我同一时候入职的女销售走了. 回忆起来,她的问题多半是技巧足够,脑子不足够,走了之后再没联系.不久之后,在老板的要求之下.LilyG又招聘了两位男销售,英文名字非常登对一个叫Tom,一个叫J ...
- HDU 1171 Big Event in HDU(多重背包)
Big Event in HDU Problem Description Nowadays, we all know that Computer College is the biggest depa ...
- android继续探索Fresco
我们接着上文继续说,上篇博客中我们已经知道了Fresco怎么用,也知道了它的非常多属性.可是非常多时候xml文件是不能满足你的要求的.这就须要你在代码中动态的改变显示的内容,今天我们就来探索一下怎样在 ...
- 深入浅出CChart 每日一课——快乐高四第九课 于无声处,CChart内置功能介绍之数据存取篇
笨笨长期以来一直使用Origin软件画图和处理数据,但Origin软件没有编程语言的接口.笨笨开发CChart的一个潜在的目标.是想实现Origin软件的功能.当然这是一个不可能达到的目标.Origi ...
- 初识MVC之建项
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到 ...
- BZOJ 2751 容易题(easy) 快速幂+快速乘
2751: [HAOI2012]容易题(easy) Description 为了使得大家高兴,小Q特意出个自认为的简单题(easy)来满足大家,这道简单题是描述如下:有一个数列A已知对于所有的A[i] ...
- hadoop 计数器
一.hadoop有非常多自带的计数器,相信看过执行log的都会看到各种数据 二.用户自己定义计数器 在开发中常常须要记录错误的数据条数,就能够用计数器来解决. 1.定义:用一个枚举来定义一组计数器,枚 ...
- Unable to access the IIS metabase
https://stackoverflow.com/questions/12859891/error-unable-to-access-the-iis-metabase 解决方法1 On Window ...