• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Why so serious? --[NKU]schindlerlee

            2010年02月28日星期日.sgu145 dfs + 二分

            2010年02月28日星期日.sgu145
            sgu145:dfs + 二分
            話說這個(gè)思路是看別人的思路看來的,我就想A*啥的了,結(jié)果才發(fā)現(xiàn)是不重復(fù)的第k最短路。
            沒有發(fā)現(xiàn)還能這么搞。
            二分第k長路的值,然后搜有多少條路的值小于等于k。這樣能得到一個(gè)第k條最短路的值,然后再搜一次,
            把這個(gè)值輸出出來即可。
            關(guān)鍵是這個(gè)思路不好想,代碼的話,注意搜有多少條路小于等于k時(shí)剪枝優(yōu)化。
            ?1?
            ?2?const?int?N?=?128;
            ?3?int?src,?des,?n,?m,?K,?vis[N],?cnt,?mid;
            ?4?vector?<?int?>g[N];
            ?5?#define?pb(x)?push_back(x)
            ?6?
            ?7?void?dfs(int?u,?int?cost)
            ?8?{
            ?9???if?(u?==?des)?{
            10???????if?(cost?<=?mid)?{
            11???????????cnt++;
            12???????}
            13???????return;
            14???}
            15?
            16???int?sz?=?g[u].size();
            17???for?(int?i?=?0;?i?<?sz;?i?+=?2)?{
            18???????int?v?=?g[u][i];
            19???????int?w?=?g[u][i?+?1];
            20???????if?(!vis[v]?&&?cost?+?w?<=?mid)?{
            21???????????vis[v]?=?true;
            22???????????dfs(v,?cost?+?w);
            23???????????vis[v]?=?false;
            24???????}
            25???????if?(cnt?>=?K)?{????//pruning
            26???????????return;
            27???????}
            28???}
            29?}
            30//http://m.shnenglu.com/schindlerlee
            31?void?pathcnt()
            32?{
            33???memset(vis,?0,?sizeof(vis)),?cnt?=?0;
            34???vis[src]?=?true;
            35???dfs(src,?0);
            36?}
            37?
            38?int?out[N],top,ans;
            39?bool?dfs2(int?u,?int?cost)
            40?{
            41???if?(u?==?des)?{
            42???????if?(cost?==?ans)?{
            43???????????out[top++]?=?u;
            44???????????return?true;
            45???????}
            46???????return?false;
            47???}
            48?
            49???int?sz?=?g[u].size();
            50???for?(int?i?=?0;?i?<?sz;?i?+=?2)?{
            51???????int?v?=?g[u][i];
            52???????int?w?=?g[u][i?+?1];
            53???????if?(!vis[v]?&&?cost?+?w?<=?ans)?{
            54???????????vis[v]?=?true;
            55???????????if?(dfs2(v,?cost?+?w))?{
            56???????????????out[top++]?=?u;
            57???????????????return?true;
            58???????????}
            59???????????vis[v]?=?false;
            60???????}
            61???}
            62???return?false;
            63?}
            64?
            65?
            66?int?main()
            67?{
            68???int?i,?j,?a,?b,?c;
            69???scanf("%d%d%d",?&n,?&m,?&K);
            70???for?(i?=?0;?i?<?m;?i++)?{
            71???????scanf("%d?%d?%d",?&a,?&b,?&c);
            72???????g[a].pb(b),?g[a].pb(c);
            73???????g[b].pb(a),?g[b].pb(c);
            74???}
            75?
            76???scanf("%d%d",?&src,?&des);
            77???int?left?=?1,?right?=?1000001;
            78???while?(left?<?right)?{
            79???????mid?=?(left?+?right)?>>?1;
            80???????pathcnt();
            81???????if?(cnt?<?K)?{
            82???????????left?=?mid?+?1;
            83???????}?else?{
            84???????????right?=?mid;
            85???????}
            86???}
            87???ans?=?left;
            88???memset(vis,0,sizeof(vis)),?vis[src]?=?true;
            89???assert(dfs2(src,0));
            90???printf("%d?%d\n",ans,top);
            91???for?(i?=?top?-?1;i?>=?0;i?--)?{
            92???????printf("%d?",out[i]);
            93???}
            94???printf("\n");
            95???return?0;
            96?}
            97?

            posted on 2010-02-28 20:51 schindlerlee 閱讀(1304) 評論(0)  編輯 收藏 引用 所屬分類: 解題報(bào)告

            91久久精品无码一区二区毛片| 久久久亚洲欧洲日产国码二区| AV无码久久久久不卡网站下载| 国产精品久久久久久福利69堂| 国产精品视频久久久| 久久久中文字幕日本| 午夜精品久久久内射近拍高清| 久久久久久九九99精品| 四虎国产永久免费久久| 无码国内精品久久人妻麻豆按摩 | 伊人久久久AV老熟妇色| 国产欧美久久一区二区| 亚洲Av无码国产情品久久| 精品久久久久久久无码| 久久久黄片| 国产国产成人精品久久| 精品久久久一二三区| 久久精品夜夜夜夜夜久久| 国产精品久久久久久久人人看| 99国产欧美久久久精品蜜芽| 欧美国产成人久久精品| 久久se这里只有精品| 久久久久无码精品国产不卡| 无码任你躁久久久久久| 99久久国产主播综合精品| 久久精品国产亚洲av水果派| 久久中文字幕人妻熟av女| 亚洲?V乱码久久精品蜜桃 | 伊人久久大香线蕉亚洲| 久久久精品波多野结衣| 狠狠干狠狠久久| 狠狠狠色丁香婷婷综合久久五月| 久久久久人妻一区二区三区| 日本精品久久久久久久久免费| 青青草原综合久久大伊人精品| 久久精品中文字幕无码绿巨人| 日产精品久久久久久久| 一级A毛片免费观看久久精品| 亚洲精品无码久久毛片| 2021国产精品午夜久久| 久久久亚洲欧洲日产国码是AV|