先上题目:

Chasing Girl

Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)
SubmitStatus

Problem Description

YYS 是SCAU_ACM里相当有名气的高富帅, 又因为他曾代表SCAU参加 World Final 而被各路亲朋好友仰慕。但YYS 又有另外一个嗜好,就是泡妞。在大学的时候,他经常去找各个女友玩耍, 但在路上却又整天遇到膜拜他的渣渣,这令他非常烦恼。于是, 他每次去找女友都希望尽量避开膜拜他的渣渣。
       YYS 把校园抽象成n个点, m条双向路组成的图。由多次经验他统计出在某条路上遇到渣渣的概率, 他现在要从A走到B, 由于他急于跟女友xxx, 所以想选择一条长度最短,在此基础上遇到渣渣概率最小的路径。YYS此时的心思只有女友, 他想你帮他算一下, 最短的路径长度和最小的概率是多少。

Input

第一行一个整数T,代表测试数据的组数。
对每组数据, 
第一行, 两个整数n, m
接下来m行,每行4个整数 u, v, w, p, 代表u,v之间有一条长度为w双向路,在这条路遇到渣渣的概率为p%
最后一行, 两个整数A, B

数据范围:
1 <= T <= 100
1 <= n <= 1000
1 <= m <= 10000
1 <= u, v, A, B <= n
1 <= w <= 100
0 <= p < 100

数据保证无重边、无自环,并且A、B之间至少有一条路径。

Output

对每组数据,输出最短的路径长度和最小的概率(保留6位小数)。

Sample Input

2
4 4
1 2 1 50
2 3 2 50
1 4 5 20
4 3 3 30
2 4 4 4
1 2 1 50
2 3 2 50
1 4 4 20
4 3 3 30
2 4

Sample Output

5 0.650000
5 0.600000   比较简单的最短路,求一次最短路,同时算一下一路上不会遇到那些人的概率,如果遇到将要修改的距离等于已经得到的最短距离的话,就根据概率来判断,如果概率变大了就更新为新的概率。
  输出的时候概率用1减一次就得到结果了(1-反面的概率)。
  这里的图是有环的,看自己的笔记好像是说DIJ只可以求DAG,所用用了SPFA,但是小伙伴说用DIJ也过了······ 上代码:
 /*
* this code is made by sineatos
* Problem: 1180
* Verdict: Accepted
* Submission Date: 2014-07-31 15:23:49
* Time: 228MS
* Memory: 1884KB
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#define MAX 10002
#define INF (1<<30)
#define ll long long
using namespace std; int n,m,st,ed; typedef struct{
int to,next,l;
double p;
}edge; edge e[MAX<<];
int p[MAX],tot;
int dist[MAX];
double pa[MAX];
queue<int> q;
bool vis[MAX]; inline void add(int u,int v,int l,int per){
e[tot].to=v; e[tot].l=l; e[tot].p=-(per*1.0/); e[tot].next=p[u]; p[u]=tot++;
} void spfa(){
for(int i=;i<=n;i++) dist[i]=INF;
memset(vis,,sizeof(vis));
while(!q.empty()) q.pop();
dist[st]=;
pa[st]=;
vis[st]=;
q.push(st);
while(!q.empty()){
int u = q.front();
q.pop();
vis[u]=;
for(int i=p[u];i!=-;i=e[i].next){
if(e[i].l+dist[u]<dist[e[i].to]){
dist[e[i].to]=e[i].l+dist[u];
pa[e[i].to]=pa[u]*e[i].p;
if(!vis[e[i].to]){
vis[e[i].to]=;
q.push(e[i].to);
}
}else if(e[i].l+dist[u]==dist[e[i].to] && pa[e[i].to]<pa[u]*e[i].p){
pa[e[i].to]=pa[u]*e[i].p;
if(!vis[e[i].to]){
vis[e[i].to]=;
q.push(e[i].to);
}
}
}
}
} int main()
{
int t,u,v,l,per;
//freopen("data.txt","r",stdin);
scanf("%d",&t);
while(t--){
scanf("%d %d",&n,&m);
memset(p,-,sizeof(p));
tot=;
for(int i=;i<m;i++){
scanf("%d %d %d %d",&u,&v,&l,&per);
add(u,v,l,per);
add(v,u,l,per);
}
scanf("%d %d",&st,&ed);
spfa();
printf("%d %.6lf\n",dist[ed],-pa[ed]);
}
return ;
}

/*Chasing Girl*/

ACDream - Chasing Girl的更多相关文章

  1. ACdream 1214---矩阵连乘

    ACdream 1214---矩阵连乘 Problem Description You might have noticed that there is the new fashion among r ...

  2. acdream.LCM Challenge(数学推导)

     LCM Challenge Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit ...

  3. acdream.Triangles(数学推导)

    Triangles Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit Stat ...

  4. acdream.A Very Easy Triangle Counting Game(数学推导)

    A - A Very Easy Triangle Counting Game Time Limit:1000MS     Memory Limit:64000KB     64bit IO Forma ...

  5. acdream.Bet(数学推导)

    Bet Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit Status Pra ...

  6. acdream.郭式树(数学推导)

    郭式树 Time Limit:2000MS     Memory Limit:128000KB     64bit IO Format:%lld & %llu Submit Status Pr ...

  7. ACdream 1188 Read Phone Number (字符串大模拟)

    Read Phone Number Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Sub ...

  8. ACdream 1195 Sudoku Checker (数独)

    Sudoku Checker Time Limit:1000MS     Memory Limit:64000KB     64bit IO Format:%lld & %llu Submit ...

  9. ACdream 1112 Alice and Bob(素筛+博弈SG函数)

    Alice and Bob Time Limit:3000MS     Memory Limit:128000KB     64bit IO Format:%lld & %llu Submit ...

随机推荐

  1. 42.extjs Combobox动态加载数据问题,mode:local 还是remote

    问题: Java代码   var fabircTypeDs = new Ext.data.Store({ proxy: new Ext.data.HttpProxy({ url: 'province. ...

  2. 字典(Trie树)

    4189 字典  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 大师 Master     题目描述 Description 最经,skyzhong得到了一本好厉害的字典,这个 ...

  3. 14款形态各异的超时尚HTML5时钟动画

    14款超时尚的HTML5时钟动画(附源码)   时钟动画在网页应用中也非常广泛,在一些个人博客中,我们经常会看到一些相当个性化的HTML5时钟动画.今天我们向大家分享了14款形态各异的超时尚HTML5 ...

  4. 马拉车算法(Manacher's Algorithm)

    这是悦乐书的第343次更新,第367篇原创 Manacher's Algorithm,中文名叫马拉车算法,是一位名叫Manacher的人在1975年提出的一种算法,解决的问题是求最长回文子串,神奇之处 ...

  5. 开启和安装Kubernetes 基于Docker For Windows

    0.最近发现,Docker For Windows Stable在Enable Kubernetes这个问题上是有Bug的,建议切换到Edge版本,并且采用下文AliyunContainerServi ...

  6. 爬虫—Ajax数据爬取

    一.什么是Ajax 有时候我们使用浏览器查看页面正常显示的数据与使用requests抓取页面得到的数据不一致,这是因为requests获取的是原始的HTML文档,而浏览器中的页面是经过JavaScri ...

  7. 安卓5.0新特性之Palette

    根据图片来决定标题的颜色和标题栏的背景色,这样视觉上更具有冲击力和新鲜感,而不像统一色调那样呆板. Palette这个类能提取以下突出的颜色: Vibrant(充满活力的) Vibrant dark( ...

  8. UNIX环境高级编程--5

    标准I/O库流和FILE对象:    所有I/O函数都是围绕文件描述符的.当打开一个文件时,即返回一个文件描述符,然后该文件描述符就用于后续的I/O操作.当用标准I/O库打开或者创建一个文件时,我们已 ...

  9. 跨域请求之jsonp

    1.什么是跨域请求: 服务器A上的一个页面,要请求服务器B上的一个处理程序,这就叫做跨域请求 本次的测试页面为: 处理程序kimhandler.ashx,如下: http://qxw119243026 ...

  10. 淘宝ip地址库接口会导致TTFB时间变长,网站打开速度变慢

    前一段时间闲来无事发现别人的网站上有显示当前用户城市的功能,就自己也整了一个 这是淘宝ip地址库调用方法 然后问题就出现了,网站打开速度慢的要死 用F12发现是TTFB太慢,然后百度了,发现了问题的原 ...