欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

HDU 1596 find the safest road (最短路)

系統 1891 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條評論
主站蜘蛛池模板: 亚洲午夜精品一级在线 | 国产一区精品视频 | 欧美一区二区在线视频 | 国产日韩精品一区 | 国模无水印一区二区三区 | 欧美精品v国产精品v日韩精品 | 天天夜夜操 | 成人亚洲一区二区色情无码潘金莲 | 久久亚洲精品国产一区 | 欧美成在线播放 | 国产精品香蕉一区二区三区 | 污污的网站免费在线观看 | 韩国三级午夜理伦三级三 | 成人婷婷 | 成人啪啪网站 | 亚洲精品综合网 | 亚欧乱色一区二区三区 | 日本高清免费zzzzzzzz | 激情亚洲视频 | 欧美一区 | 日本加勒比视频在线观看 | 亚洲精品久久午夜无码一区二区 | 国产一区在线免费观看 | 国产黄视频在线观看 | 日本在线观看视频网站 | 欧美视频在线免费播放 | 日本免费在线 | 国产精品久久久久无码av | 亚洲视频区 | 天天拍天天干天天操 | 一区二区三区日韩视频在线观看 | 欧美交性又色又爽又黄 | 亚洲视频在线一区二区 | 国产成人啪精品视频免费网站软件 | 色五月视频 | 久久久久久综合 | 亚洲a级在线观看 | 性夜黄 a 爽免费看 性xxxxx视频 | 亚洲一区二区三区深夜天堂 | 午夜小视频在线观看 | 天天做天天爱天天大综合 |