亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

HDU 1596 find the safest road (最短路)

系統 2095 0

find the safest road

Time Limit: 10000/5000 MS (Java/Others)????Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 6973????Accepted Submission(s): 2469



Problem Description
XX星球有非常多城市,每一個城市之間有一條或多條飛行通道,可是并非全部的路都是非常安全的,每一條路有一個安全系數s,s是在 0 和 1 間的實數(包含0,1),一條從u 到 v 的通道P 的安全度為Safe(P) = s(e1)*s(e2)…*s(ek) e1,e2,ek是P 上的邊 ,如今8600 想出去旅游,面對這這么多的路,他想找一條最安全的路。可是8600 的數學不好,想請你幫忙 ^_^
?

Input
輸入包含多個測試實例,每一個實例包含:
第一行:n。n表示城市的個數n<=1000;
接著是一個n*n的矩陣表示兩個城市之間的安全系數,(0能夠理解為那兩個城市之間沒有直接的通道)
接著是Q個8600要旅游的路線,每行有兩個數字,表示8600所在的城市和要去的城市
?

Output
假設86無法達到他的目的地,輸出"What a pity!",
其它的輸出這兩個城市之間的最安全道路的安全系數,保留三位小數。
?

Sample Input
        
3 1 0.5 0.5 0.5 1 0.4 0.5 0.4 1 3 1 2 2 3 1 3
?

Sample Output
        
0.500 0.400 0.500
?

Author
ailyanlu
?

Source
?

Recommend
8600???|???We have carefully selected several similar problems for you:?? 1217 ? 1598 ? 1142 ? 1690 ? 1385

題意非常明確了,還是一些小細節的問題,模板打多了毀帶來一些思維僵化,
所以找一些模板題但又有些變通的題最好了。

代碼:1671MS
        
          #include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>

        
        
          
            using namespace
          
        
         std
        
          
            ;
          
        
        
          
#define M 1050

        
        
          
            int
          
        
         n
        
          
            ,
          
        
        m
        
          
            ;
          
          
             double
          
        
         map
        
          
            [
          
        
        M
        
          
            ][
          
        
        M
        
          
            ],
          
        
        dis
        
          
            [
          
        
        M
        
          
            ];
          
          
             void
          
        
         Dijkstra
        
          
            (
          
          
            int
          
        
         x
        
          
            ,
          
          
            int
          
        
         y
        
          
            ) {
          
          
             bool
          
        
         v
        
          
            [
          
        
        M
        
          
            ]={
          
        
        
          0
        
        
          
            };
          
          
             int
          
        
         i
        
          
            ,
          
        
        j
        
          
            ;
          
          
             for
          
          
            (
          
        
        i
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        i
        
          
            <=
          
        
        n
        
          
            ;
          
        
        i
        
          
            ++)
          
        
         dis
        
          
            [
          
        
        i
        
          
            ]=(
          
        
        i
        
          
            ==
          
        
        x
        
          
            ?
          
        
        
          1
        
        
          
            :
          
        
        
          0
        
        
          
            );
          
          
             for
          
          
            (
          
        
        i
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        i
        
          
            <=
          
        
        n
        
          
            ;
          
        
        i
        
          
            ++) {
          
          
             int
          
        
         k
        
          
            ;
          
          
             double
          
        
         Min
        
          
            =
          
        
        
          0
        
        
          
            ; //在這里WA了一發,模板打多了就僅僅會int了。
          
          
             for
          
          
            (
          
        
        j
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        j
        
          
            <=
          
        
        n
        
          
            ;
          
        
        j
        
          
            ++)
          
          
             if
          
          
            (!
          
        
        v
        
          
            [
          
        
        j
        
          
            ] &&
          
        
         dis
        
          
            [
          
        
        j
        
          
            ]>
          
        
        Min
        
          
            )
          
        
         Min
        
          
            =
          
        
        dis
        
          
            [
          
        
        k
        
          
            =
          
        
        j
        
          
            ];
          
        
        
      v
        
          
            [
          
        
        k
        
          
            ]=
          
        
        
          1
        
        
          
            ;
          
          
             for
          
          
            (
          
        
        j
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        j
        
          
            <=
          
        
        n
        
          
            ;
          
        
        j
        
          
            ++)
          
        
         dis
        
          
            [
          
        
        j
        
          
            ]=
          
        
        max
        
          
            (
          
        
        dis
        
          
            [
          
        
        j
        
          
            ],
          
        
        dis
        
          
            [
          
        
        k
        
          
            ]*
          
        
        map
        
          
            [
          
        
        k
        
          
            ][
          
        
        j
        
          
            ]); }
          
          
             if
          
          
            (
          
        
        dis
        
          
            [
          
        
        y
        
          
            ])
          
        
         printf
        
          
            (
          
        
        
          "%.3lf\n"
        
        
          
            ,
          
        
        dis
        
          
            [
          
        
        y
        
          
            ]);
          
          
             else
          
        
         printf
        
          
            (
          
        
        
          "What a pity!\n"
        
        
          
            ); }
          
          
             int
          
          
             main
          
          
            () {
          
          
             int
          
        
         i
        
          
            ,
          
        
        j
        
          
            ;
          
          
             int
          
        
         a
        
          
            ,
          
        
        b
        
          
            ,
          
        
        c
        
          
            ;
          
          
             while
          
          
            (
          
        
        scanf
        
          
            (
          
        
        
          "%d"
        
        
          
            ,&
          
        
        n
        
          
            )!=
          
        
        EOF
        
          
             &&
          
        
         n
        
          
            ) {
          
        
        
      memset
        
          
            (
          
        
        map
        
          
            ,
          
        
        
          0
        
        
          
            ,
          
          
            sizeof
          
          
            (
          
        
        map
        
          
            ));
          
          
             for
          
          
            (
          
        
        i
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        i
        
          
            <=
          
        
        n
        
          
            ;
          
        
        i
        
          
            ++)
          
          
             for
          
          
            (
          
        
        j
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        j
        
          
            <=
          
        
        n
        
          
            ;
          
        
        j
        
          
            ++) {
          
        
        
          scanf
        
          
            (
          
        
        
          "%lf"
        
        
          
            ,&
          
        
        map
        
          
            [
          
        
        i
        
          
            ][
          
        
        j
        
          
            ]); }
          
        
        
      //題目給的是鄰接矩陣,所以不要初始化了。
      scanf
        
          
            (
          
        
        
          "%d"
        
        
          
            ,&
          
        
        m
        
          
            );
          
          
             for
          
          
            (
          
        
        i
        
          
            =
          
        
        
          1
        
        
          
            ;
          
        
        i
        
          
            <=
          
        
        m
        
          
            ;
          
        
        i
        
          
            ++) {
          
        
        
       scanf
        
          
            (
          
        
        
          "%d%d"
        
        
          
            ,&
          
        
        a
        
          
            ,&
          
        
        b
        
          
            );
          
        
        
       Dijkstra
        
          
            (
          
        
        a
        
          
            ,
          
        
        b
        
          
            ); } }
          
          
             return
          
        
        
           0
        
        
          
            ; }
          
        
      
我個人覺得用Floyd算法應該也能夠,就是時限的問題了。
這題應該要用SPFA算法去做,只是時限放的非常寬,所以就變成模板題了。
事實上精品題和模板題差距就在時限和思想雙方面。

HDU 1596 find the safest road (最短路)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美白人猛性xxxxx交69 | 日韩亚洲一区二区三区 | 97欧美在线看欧美视频免费 | 午夜精品久久久久久久久 | 五月天婷婷在线视频 | 综合久久久久综合体桃花网 | 日本老年人精品久久中文字幕 | 欧美久久一区二区 | 免费视频爱爱太爽在线观看 | 亚洲国产成人久久77 | 天天操夜夜操美女 | 亚洲精品www久久久久久久软件 | 天天操天天干天天爽 | 97se亚洲国产综合自在线观看 | 91九色视频在线观看 | 欧美在线视频播放 | 一本清高清dvd日本播放器 | 国产色综合久久无码有码 | 精品欧美高清一区二区免费 | 国产系列 视频二区 | 99久久精品免费精品国产 | 久久免费精品高清麻豆 | 成人中文字幕一区二区三区 | 四虎. com 官网 | 波多野结衣一区二区 三区 波多野结衣一区二区三区 波多野结衣一区二区三区高清在线 | 中国女人和老外的毛片 | 欧美一级久久久久久久大 | 欧美色五月 | 欧美最猛的24k毛片视频 | 日日撸夜夜撸网站 | 午夜在线播放 | 久在线观看 | 韩国三日本三级中文字幕 | 国产在线拍揄自揄视频不卡99 | 日韩欧美在线综合网高清 | 国产aa免费视频 | 欧日韩美香蕉在线观看 | 成人性色生活片全黄 | 热久久精品免费视频 | 尹人香蕉久久99天天拍欧美p7 | 中文字幕伊人久久网 |