首页 > 代码库 > POJ 2472 106 miles to Chicago
POJ 2472 106 miles to Chicago
最短路问题变形。
题意是给你一些道路,和路过时不被抓的概率。要求找一条到达目的地时不被抓的最大概率概率。
初始 dis[]设为 1 。其余为 0 。找最大即可。
#include<cstdio> #include<cstring> #include<string> #include<queue> #include<algorithm> #include<map> #include<stack> #include<iostream> #include<list> #include<set> #include<cmath> #define INF 0x7fffffff #define eps 1e-6 #define LL long long using namespace std; int n,m; struct lx { int v; double p; }; vector<lx> g[101]; void SPFA() { double dis[101]; bool vis[101]; for(int i=1;i<=n;i++) dis[i]=0,vis[i]=0; dis[1]=1.0,vis[1]=1; queue<int>q; q.push(1); while(!q.empty()) { int u=q.front();q.pop(); vis[u]=0; for(int j=0;j<g[u].size();j++) { int v=g[u][j].v; double p=g[u][j].p; if(dis[v]<dis[u]*p) { dis[v]=dis[u]*p; if(!vis[v]) { vis[v]=1; q.push(v); } } } } printf("%f percent\n",dis[n]*100); } int main() { while(scanf("%d",&n),n) { scanf("%d",&m); for(int i=0;i<=n;i++) g[i].clear(); int u,v; double p; while(m--) { scanf("%d%d%lf",&u,&v,&p); lx now; now.p=p/100.0; now.v=v; g[u].push_back(now); now.v=u; g[v].push_back(now); } SPFA(); } }
POJ 2472 106 miles to Chicago
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。