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的个数(这可以通过树状数组求区间和得出),记录右边界即 ...
随机推荐
- chrome隐身模式无法播放flash的解决办法
困扰很多天的chrome无法播放flash的问题终于解决了 因为之前一直用隐身模式,一直不能播放flash,重装chrome,重装插件,还是不行 结果今天发现正常模式是可以播放的,所以找了一下chro ...
- 面试宝典之基本的C#面试问答
下文是100个基本的C#面试问答清单.这些面试问题简单.直接了当,涵盖了C#最基本的概念,大部分和面向对象的概念相关.所以如果你在准备C#面试,我建议你必须掌握这100个基本的C#面试问答来复习你的C ...
- Oracle 中UNDO与REDO的差别具体解释
一 为了更清楚的看出2者差别,请看下表: UNDO ...
- CF149D 区间dp
http://codeforces.com/problemset/problem/149/D D. Coloring Brackets time limit per test 2 seconds me ...
- (素数求解)I - Dirichlet's Theorem on Arithmetic Progressions(1.5.5)
Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit cid=1006#sta ...
- UI设计师不可不知的安卓屏幕知识-安卓100分享
http://www.android100.org/html/201505/24/149342.html UI设计师不可不知的安卓屏幕知识-安卓100分享 不少设计师和工程师都被安卓设备纷繁的屏幕搞得 ...
- Java做一个时间的程序,为什么要除以1000*60*60*24啊。这个数字是什么意思啊。
1000耗秒(1秒),60秒(1分),60分(1小时),24小时(1天)
- 如何让MP4 video视频背景色变成透明?
本文转自:https://www.zhangxinxu.com/wordpress/2019/05/mp4-video-background-transparent/ 亲测,pc端有效,但移动端微信内 ...
- CALayer初认识
CALayer :CA就是coreAnimation 核心动画 它是同时支持 Mac OS 和 iOS系统的 所有的核心动画都是通过CALayer来实现的 UIView本身是不具备显示功能的 是它内部 ...
- vs的任务列表
前几天才刚开始看到这个 很多时候,一些任务,怕忘记了,或者已经做好的东西,由于各种原因,暂时不用等等这种情况 这时候,就可以在vs上,随时加到任务列表中,方面下次直接来修改或实现等等 在vs的视图&g ...