106 miles to Chicago---zoj2797(最短路问题,求概率,模板)
2016-03-30 20:24
836 查看
题目链接:http://www.icpc.moe/onlinejudge/showProblem.do?problemId=1797
题意是有 n 个点 m 条边,从a到b的不被抓的概率是p,让求从点1到点n的不被抓的最大概率;
Dijkstra套一下就可以了,注意初始化;
ab到bc不被抓的概率等于ab不被抓的概率乘上bc不被抓的概率;
View Code
题意是有 n 个点 m 条边,从a到b的不被抓的概率是p,让求从点1到点n的不被抓的最大概率;
Dijkstra套一下就可以了,注意初始化;
ab到bc不被抓的概率等于ab不被抓的概率乘上bc不被抓的概率;
#include <stdio.h> #include <algorithm> #include<string.h> #include<queue> using namespace std; #define met(a, b) memset(a, b, sizeof(a)) #define MOD 1000000007 #define N 2050 #define INF 0x3f3f3f3f typedef long long LL; int n, m, G , vis ; double dist ; double Dijkstra(int s) { for(int i=1; i<=n; i++) dist[i] = G[s][i]; vis[s] = 1; for(int i=1; i<=n; i++) { double Min = -INF; int Index = -1; for(int j=1; j<=n; j++) { if( !vis[j] && Min < dist[j]) { Min = dist[j]; Index = j; } } if(Index == -1)break; vis[Index] = 1; for(int j=1; j<=n; j++) { if( !vis[j] && dist[j] < dist[Index]*G[Index][j]/100.0) { dist[j] = dist[Index]*G[Index][j]/100.0; } } } return dist ; } void Init() { for(int i=0; i<=n; i++) { for(int j=0; j<=n; j++) G[i][j] = -INF; dist[i] = -INF; G[i][i] = vis[i] = 0; } } int main() { int a, b, c; while(scanf("%d", &n), n) { Init(); scanf("%d", &m); for(int i=1; i<=m; i++) { scanf("%d%d%d", &a, &b, &c); G[a][b] = G[b][a] = max(G[a][b], c); } double ans = Dijkstra(1); printf("%.6f percent\n", ans); } return 0; }
View Code
相关文章推荐
- Go语言学习六:指针与传递到函数的指针
- CF_5A_ChatServer'sOutgoingTraffic
- 尽量用goto代替尾递归
- HZNU-1480-The Gougu Theorem【勾股数】
- Django基础——Model篇(二)
- Django创建工程及应用
- UVa11090 Going in Cycle!!
- 【暑假】[深入动态规划]UVa 10618 Tango Tango Insurrection
- Django-rest-framework学习(-)Serialization
- mongotemplate做插入时怎样去掉多余字段
- 【干货】Go语言开发常见陷阱,你遇到过几个?
- Django REST 异常处理
- Google带WiFi的热气球或首次商用
- Google带WiFi的热气球或首次商用
- Go net包介绍
- Django Models的数据类型 汇总
- Google推荐的图片加载库Glide介绍
- 百度地图缩放、比例尺、logo操作
- mongostat
- CodeForces - 368C Sereja and Algorithm (找规律&模拟)