URAL 1934 Black Spot --- 简单最短路变形
来源:互联网 发布:淘宝哪家店女装好看又便宜 编辑:程序博客网 时间:2024/05/18 00:35
边权为1,在维护最短路的同时维护p值最小,我直接存的(1-p),即不遇见的概率,要使得这个值最大。
#include <iostream>#include <cstdlib>#include <cstring>#include <string>#include <cstdio>#include <cmath>#include <algorithm>#include <vector>#include <queue>#include <map>#define inf 0x3f3f3f3f#define eps 1e-6#define ll long longconst int maxn=100010;const int maxm=100010;using namespace std;struct node{ int v,w,next; double p;}e[maxm<<1];int vis[maxn],h,head[maxn],n,m,d[maxn],pre[maxn];double p[maxn];void addedge(int a,int b,double c){ e[h].v=b; e[h].w=1; e[h].p=c; e[h].next=head[a]; head[a]=h++;}void spfa(int s){ int x,v,i; for(i=0;i<=n;i++) p[i]=0,d[i]=inf; memset(vis,0,sizeof vis); memset(pre,-1,sizeof pre); p[s]=1,vis[s]=1,d[s]=0; queue<int> q; q.push(s); while(!q.empty()) { x=q.front(); q.pop(); vis[x]=0; for(i=head[x];i!=-1;i=e[i].next) { v=e[i].v; if(d[v]>d[x]+1) { d[v]=d[x]+1; p[v]=p[x]*e[i].p; pre[v]=x; if(!vis[v]) { vis[v]=1; q.push(v); } } else if(d[v]==d[x]+1) { if(p[v]<p[x]*e[i].p) { p[v]=p[x]*e[i].p; pre[v]=x; if(!vis[v]) { vis[v]=1; q.push(v); } } } } } return ;}int flag;void output(int x){ if(pre[x]!=-1) output(pre[x]); if(flag) flag=0; else putchar(' '); printf("%d",x);}int main(){ int a,b,s,t; double c; while(~scanf("%d%d",&n,&m)) { h=0; memset(head,-1,sizeof head); scanf("%d%d",&s,&t); while(m--) { scanf("%d%d%lf",&a,&b,&c); addedge(a,b,1-c/100); addedge(b,a,1-c/100); } spfa(s); printf("%d %.8lf\n",d[t]+1,1-p[t]); flag=1; output(t); puts(""); } return 0;}
0 0
- URAL 1934 Black Spot --- 简单最短路变形
- POJ 2253 最短路的简单变形
- 最短路径(9)--poj1062(最短路简单变形)
- 最短路变形_Poj_2253
- 最短路变形ural1934
- poj1797 最短路变形
- dij最短路 变形
- spfa最短路 [URAL-1930]
- 【二分答案&&最短路】URAL
- hdu 3499 最短路变形
- hdu_1596最短路小变形
- HDU 4360 最短路变形
- poj 1797 最短路变形
- poj 1797 最短路变形
- poj 1797(最短路变形)
- loj 1379(最短路变形)
- Frogger(最短路_floyd变形)
- poj 3013 最短路变形
- C语言数据类型与变量
- HDU 4883 TIANKENG’s restaurant (贪心)
- LeetCode第四题,Add Two Numbers
- 51Talk-Level 7 Unit 1 L4
- 114_fragment界面切换
- URAL 1934 Black Spot --- 简单最短路变形
- 围圈报数问题(约瑟夫问题)
- 初识并查集
- JVM Heap和Stack
- 数论基础题目八题【欧几里得】【筛法素数】【中国剩余定理】
- 关于反射的理解-浅谈反射
- EAS流程卡死问题的分析处理报告
- 关于C++中const的全面总结
- Android情景分析之深入解析system_server