简单的一题,使用类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的更多相关文章

  1. HDU 4318 Power transmission(最短路)

    http://acm.hdu.edu.cn/showproblem.php?pid=4318 题意: 给出运输路线,每条路线运输时都会损失一定百分比的量,给定起点.终点和初始运输量,问最后到达终点时最 ...

  2. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  3. hdu - 5045 - Contest(国家压缩dp)

    意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...

  4. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  5. HDU–5988-Coding Contest(最小费用最大流变形)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  6. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

  7. HDU 5045 Contest

    pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...

  8. HDU 4335 Contest 4

    利用降幂公式..呃,还是自己去搜题解吧.知道降幂公式后,就不难了. #include <iostream> #include <cstdio> #include <alg ...

  9. HDU 4339 Contest 4

    树状数组,主要是抓住要求连续1的个数.这样,初始时,相同的加1,不同的加0. 查询时,用二分搜索右边界.就是比较当前mid-l+1的值与他们之间1的个数(这可以通过树状数组求区间和得出),记录右边界即 ...

随机推荐

  1. 洛谷—— P1262 间谍网络

    https://www.luogu.org/problem/show?pid=1262 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B间谍的犯罪证据,则称A ...

  2. 安卓系统底层C语言算法之測试參数是几个long型的算法

    #include <stdio.h> #define BITS_PER_LONG (sizeof(unsigned long) * 8) //求一个数x是几个long的长度 #define ...

  3. jQuery Video Extend

    HTML5视频扩展插件 能够加入Logo 加入标记 用法: 下载:jquery-video-extend <script src="js/jquery-2.1.4.min.js&quo ...

  4. 数据结构(Java语言)——LinkedList简单实现

    下面是一个能够使用的LinkedList泛型类的实现.这里的链表类名为MyLinkedList,避免与类库中反复. MyLinkedList将作为双链表实现,并且保留到该表两端的引用.这样仅仅要操作发 ...

  5. Nginx系列(三)--管理进程、多工作进程设计

    Nginx由一个master进程和多个worker进程组成,但master进程或者worker进程中并不会再创建线程. 一.master进程和worker进程的作用 master进程 不须要处理网络事 ...

  6. 英语发音规则---K字母

    英语发音规则---K字母 一.总结 一句话总结: 1.K发[k]音? kind [kaɪnd] n. 种类 bike [baɪk] n. 自行车 skate [skeɪt] vi. 滑冰 make [ ...

  7. Codeforces 993A. Two Squares(暴力求解)

    解题思路(暴力解法) 平行于x轴的正方形和与x轴成45度倾斜的正方形相交的点中必定有整数点.即若两正方形相交,必定存在整数i,j,使(i,j)同时属于两个正方形. 我们把两个正方形中的整数点都找出来, ...

  8. Hibernate框架学习(三)——实体规则、对象状态、一级缓存

    一.Hibernate中的实体规则 1.实体类创建的注意事项 1)持久化类提供无参数构造,因为在Hibernate的底层需要使用反射生成类的实例. 2)成员变量私有,提供公有的get和set方法,需提 ...

  9. Windows下绿色版Tomcat部署Thingworx 7.4

    绿色版Tomcat部署Thingworx7.4和安装只有一个不同之处,安装版Tomcat需要在Configure Tomcat的Java标签下设置Java Options,但是绿色版并没有这个exe程 ...

  10. “双十二”年终盛典,Guitar Pro邀您一起倾情共舞

    躲过了双十一,躲不过双十二,隐约昨天还是双十一,马上双十二又叕来了,弱弱的问一句“你们的手长粗了来了吗?”在这即将结束的年终盛典里,各商家又将如“双十一”般纷纷使出浑身解数,作为吉他最佳拍档的编曲软件 ...