• <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>

            A Za, A Za, Fighting...

            堅信:勤能補拙

            PKU 2060 Taxi Cab Scheme

            問題:
            http://poj.org/problem?id=2060

            思路:
            將每一個Taxi訂單作為頂點,根據題意如果訂單i與訂單j可以在規定時間內到達,那么說頂點i與頂點j存在一條邊
            最小路徑覆蓋問題可以轉化為最大匹配問題
            見: http://www.shnenglu.com/Joe/archive/2010/10/21/130676.html

            代碼:
             1 #include<stdio.h>
             2 #include<stdlib.h>
             3 #include<string.h>
             4 #define MAX_LEN 501
             5 #define Abs(a) ((a)>=0 ? (a) : (a)*(-1))
             6 int M;
             7 int graph[MAX_LEN][MAX_LEN];
             8 int state[MAX_LEN], fwd[MAX_LEN], bwd[MAX_LEN];
             9 struct Taxi {
            10     int hour, minu;
            11     int sx, sy, dx, dy;
            12 }rides[MAX_LEN];
            13 
            14 int
            15 reachable(struct Taxi *fst, struct Taxi *scd)
            16 {
            17     int h, m;
            18     h = fst->hour;
            19     m = fst->minu + Abs(fst->dx-fst->sx) + Abs(fst->dy-fst->sy) + Abs(scd->sx-fst->dx) + Abs(scd->sy-fst->dy);
            20     h = (h+m/60);
            21     m = m%60;
            22     if(h >= 24)
            23         return 0;
            24     if(h == scd->hour)
            25         return (m<scd->minu);
            26     return (h<scd->hour);
            27 }
            28 
            29 void
            30 build_graph()
            31 {
            32     int i, j;
            33     memset(graph, 0sizeof(graph));
            34     for(i=0; i<M; i++)
            35         for(j=i+1; j<M; j++)
            36             if(reachable(rides+i, rides+j))
            37                 graph[i][j] = 1;
            38 }
            39 
            40 int
            41 find_path(int u)
            42 {
            43     int i;
            44     for(i=0; i<M; i++) {
            45         if(graph[u][i] && !state[i]) {
            46             state[i] = 1;
            47             if(bwd[i]==-1 || find_path(bwd[i])) {
            48                 bwd[i] = u;
            49                 fwd[u] = i;
            50                 return 1;
            51             }
            52         }
            53     }
            54     return 0;
            55 }
            56 
            57 int 
            58 MaxMatch()
            59 {
            60     int i, ans = 0;
            61     memset(fwd, -1sizeof(fwd));
            62     memset(bwd, -1sizeof(bwd));
            63     for(i=0; i<M; i++) {
            64         if(fwd[i] == -1) {
            65             memset(state, 0sizeof(state));
            66             if(find_path(i))
            67                 ++ans;
            68         }
            69     }
            70     return ans;
            71 }
            72 
            73 int
            74 main(int argc, char **argv)
            75 {
            76     int i, tests;
            77     scanf("%d"&tests);
            78     while(tests--) {
            79         scanf("%d"&M);
            80         for(i=0; i<M; i++
            81             scanf("%d:%d %d %d %d %d"&rides[i].hour, &rides[i].minu, &rides[i].sx, &rides[i].sy, &rides[i].dx, &rides[i].dy);
            82         build_graph();
            83         printf("%d\n", M-MaxMatch());
            84     }
            85 }

            posted on 2010-10-21 00:18 simplyzhao 閱讀(417) 評論(0)  編輯 收藏 引用 所屬分類: F_圖算法

            導航

            <2010年9月>
            2930311234
            567891011
            12131415161718
            19202122232425
            262728293012
            3456789

            統計

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            97精品国产97久久久久久免费| 国内精品久久久久久99| 国产亚洲精久久久久久无码AV| 久久AV高清无码| 99久久精品久久久久久清纯| 久久久久亚洲AV无码专区桃色 | 久久夜色精品国产噜噜麻豆| 久久久久成人精品无码中文字幕| 9191精品国产免费久久| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 精品久久久久久国产牛牛app| 久久久久久久久久免免费精品| 久久婷婷色综合一区二区| 久久久久久久亚洲Av无码| 久久久久久久国产免费看| 久久久久人妻精品一区二区三区 | 亚洲乱码中文字幕久久孕妇黑人| 精品国产乱码久久久久久1区2区 | 亚洲欧美日韩精品久久亚洲区| 久久精品99久久香蕉国产色戒| 亚洲精品国产综合久久一线| 国产精品久久亚洲不卡动漫| 狠狠色丁香婷婷久久综合五月| 欧美精品一区二区精品久久| 亚洲va久久久噜噜噜久久狠狠| 国产亚州精品女人久久久久久| 国产精品久久国产精麻豆99网站 | 91精品国产综合久久香蕉| 久久亚洲日韩精品一区二区三区| 国内精品伊人久久久久妇| 久久亚洲电影| 亚洲国产日韩欧美综合久久| 一级做a爰片久久毛片人呢| 77777亚洲午夜久久多喷| 天天爽天天狠久久久综合麻豆| 亚洲欧美日韩久久精品| 久久无码高潮喷水| 国内精品久久国产| 中文精品99久久国产| 久久久久亚洲AV无码专区首JN | 久久精品一区二区三区不卡|