zoukankan      html  css  js  c++  java
  • 415. [HAOI2009] 旅行

    ★★   输入文件:toura.in   输出文件:toura.out   简单对比

    时间限制:1 s   内存限制:128 MB

    试题描述
    小明住在城市1,而他的朋友小芳住在城市n。最近小明收到小芳的邀请,准备于近期赴约。可是由于最近下了很多暴雨,很多道路都被淹没。从城市1出发到城市n之间有很多小城镇,并且两个小城镇之间有一条直接道路相连。小明经过对近期天气和地形的科学分析,绘出了每条道路能顺利通行的概率。
    为了能顺利到达目的地,请帮助小明找出一条最稳妥的路线,也就是从城市1出发到达城市n的路线中能顺利通行的最大概率。
     
    输入数据
    文件第一行包含两个整数n和m,n为城市数,m为道路条数。
    接下来m行,每行包含三个整数a,b,p ( 1<=p<=100 ),表示小城镇a与小城镇b间有一条道路,顺利通过这条道路的概率为p%。
     
    输出数据
    一个实数P,为到达城市n的最大概率,P精确到小数点后6位。
     
     
    样例输入

    5 7
    5 2 100
    3 5 80
    2 3 70
    2 1 50
    3 4 90
    4 1 85
    3 1 70
    样例输出
    61.200000
     
    样例说明:选择路线为1-4-3-5,概率为85%*90%*80%=61.2%
    测试数据范围
    30%的数据,n<=1000,m<=3000
    100%的数据,n<=10000,m<=30000
     
    代码并非自己写的,那个eps是个什么鬼,有点搞不懂:
     
    #include<cstdio>
    #include<algorithm>
    #include<queue>
    #include<iostream>
    
    using namespace std;
    const int N=1e5+10;
    const double eps=1e-9;
    
    struct edge{int f,t,l;}w[N];
    int n,m,head[N],next[N],tail[N],cnt;
    
    void add(int f,int t,int l)
    {
    	w[++cnt]=(edge){f,t,l};
    	if (!head[f]) head[f]=tail[f]=cnt;
    		else tail[f]=next[tail[f]]=cnt; 
    }
    
    double dis[N];bool inque[N];
    
    void spfa()
    {
    	queue<int> Q;
    	for (int i=1;i<=n;i++) dis[i]=0;
    	dis[1]=1;Q.push(1);
    	while (!Q.empty())
    	{
    		int v=Q.front();Q.pop();
    		inque[v]=0;
    		for (int i=head[v];i;i=next[i])
    			if (dis[w[i].t]+eps<dis[v]/100*w[i].l)
    			{
    				dis[w[i].t]=dis[v]/100*w[i].l;
    				if (!inque[w[i].t]) inque[w[i].t]=1,Q.push(w[i].t);
    			}
    	}
    }
    
    int main()
    {
    	
    	freopen("toura.in","r",stdin);
    	freopen("toura.out","w",stdout);
    	scanf("%d%d",&n,&m);
    	for (int i=1,f,t,l;i<=m;i++)
    	{
    		scanf("%d%d%d",&f,&t,&l);
    		add(f,t,l);add(t,f,l);
    	}
    	spfa();
    	printf("%.6lf
    ",100*dis[n]);
    	return 0;
    }
    

      

     
  • 相关阅读:
    易用网页下载器V0.1
    重复造轮之权限管理系统
    网页格式化排版代码,专用信息采集后的内容整理
    随机点名软件
    PHP导入Excel表格,读取Excel的内容到数组。
    汉字的书写效果的实现
    php的一个断点续传下载实现
    sentry的安装和使用以及各种问题处理
    CentOS下安装Redis及Redis的PHP扩展
    用ASP.NET_Regsql.exe创建Session数据库
  • 原文地址:https://www.cnblogs.com/lyqlyq/p/7191666.html
Copyright © 2011-2022 走看看