本文主要是介绍106 miles to Chicago,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
输入顶点数和边的条数以及从无向边,不同的是表示从a到b不被抓住的概率是p 计算并输出从1到n他们不被抓住的最大概率;
又是一道乘积最长路问题;
代码:
#include<iostream>
#include<algorithm>
#include<string.h>
#include<stdio.h>
using namespace std;
double e[105][105];
double dis[105];
bool book[105];
int n,m;
void intt()
{
memset(e,0,sizeof(e));
memset(dis,0,sizeof(dis));
memset(book,0,sizeof(book));
}
int main()
{
int a,b;
double c;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
scanf("%d",&m);
intt();
for(int i=0;i<m;i++)
{
scanf("%d %d %lf",&a,&b,&c);
e[a][b]=e[b][a]=c/100;
//printf("%d %d %lf\n",a,b,e[a][b]);
}
book[1]=1;
for(int i=1;i<=n;i++)
dis[i]=e[1][i];
dis[1]=1;
for(int i=0;i<n;i++)
{
int u;
double maxx=0;
for(int j=1;j<=n;j++)
{
if(book[j]==0&&dis[j]>maxx)
{
u=j;
maxx=dis[j];
// printf("%lf\n",maxx);
}
}
book[u]=1;
for(int v=1;v<=n;v++)
{
if(dis[v]<dis[u]*e[u][v])
dis[v]=dis[u]*e[u][v];
}
}
printf("%.6lf percent\n",dis[n]*100.0);
}
return 0;
}
这篇关于106 miles to Chicago的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!