青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

superman

聚精會神搞建設 一心一意謀發(fā)展
posts - 190, comments - 17, trackbacks - 0, articles - 0
   :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Section 3.3 - Camelot

Posted on 2009-06-04 13:50 superman 閱讀(254) 評論(0)  編輯 收藏 引用 所屬分類: USACO
  1 #include <queue>
  2 #include <iostream>
  3 
  4 using namespace std;
  5 
  6 struct point {
  7     int x, y;
  8     point operator+(const point &p) const {
  9         point np = { x + p.x, y + p.y };
 10         return np;
 11     }
 12 }   ;
 13 
 14 int r, c, knightsNum;
 15 point king, knights[30 * 26];
 16 
 17 const point kinghtDir[8= {
 18     {-2+1}, {-1+2}, {+1+2}, {+2+1},
 19     {+2-1}, {+1-2}, {-1-2}, {-2-1}
 20 }   ;
 21 
 22 inline bool inside(const point &p) {
 23     return p.x >= 0 && p.x < r && p.y >= 0 && p.y < c;
 24 }
 25 
 26 int dist[30][26][30][26];
 27 void spfa(const point &s)
 28 {
 29     for (int i = 0; i < r; i++)
 30     for (int j = 0; j < c; j++)
 31         dist[s.x][s.y][i][j] = INT_MAX;
 32     dist[s.x][s.y][s.x][s.y] = 0;
 33 
 34     queue<point> q;
 35     q.push(s);
 36 
 37     point cp;   //current point
 38     point np;   //next point
 39     while (q.empty() == false)
 40     {
 41         cp = q.front(); q.pop();
 42         for (int i = 0; i < 8; i++)
 43         {
 44             np = cp + kinghtDir[i];
 45             if (inside(np) && dist[s.x][s.y][cp.x][cp.y] + 1 < dist[s.x][s.y][np.x][np.y])
 46             {
 47                 dist[s.x][s.y][np.x][np.y] = dist[s.x][s.y][cp.x][cp.y] + 1;
 48                 q.push(np);
 49             }
 50         }
 51     }
 52 }
 53 
 54 int ans = INT_MAX;
 55 void gather(int tx, int ty)
 56 {
 57     int sum = 0;
 58     for (int i = 0; i < knightsNum; i++)
 59         sum += dist[knights[i].x][knights[i].y][tx][ty];
 60 
 61     if (sum > ans)
 62         return;
 63 
 64     for (int i = max(0, king.x - 2); i <= min(r - 1, king.x + 2); i++)
 65     for (int j = max(0, king.y - 2); j <= min(c - 1, king.y + 2); j++)
 66     {
 67         int tmp;
 68         if (i == king.x && j == king.y)
 69             tmp = 0;
 70         else
 71         {
 72             if (abs(i - king.x) == 1 || abs(j - king.y == 1))
 73                 tmp = 1;
 74             else
 75                 tmp = 2;
 76         }
 77         for (int k = 0; k < knightsNum; k++)
 78             if (dist[knights[k].x][knights[k].y][i][j] != INT_MAX &&
 79                 dist[i][j][tx][ty] != INT_MAX)
 80             ans <?= (sum - dist[knights[k].x][knights[k].y][tx][ty]
 81                 + tmp + dist[knights[k].x][knights[k].y][i][j] + dist[i][j][tx][ty]);
 82     }
 83 }
 84 
 85 int main()
 86 {
 87     freopen("camelot.in""r", stdin);
 88     freopen("camelot.out""w", stdout);
 89 
 90     cin >> r >> c;
 91 
 92     {
 93         char a; int b;
 94         cin >> a >> b;
 95         king.y = a - 'A', king.x = b - 1;
 96         while (cin >> a >> b)
 97         {
 98             knights[knightsNum].y = a - 'A';
 99             knights[knightsNum].x = b - 1;
100             knightsNum++;
101         }
102     }
103 
104     if (knightsNum == 0)
105     {
106         cout << 0 << endl;
107         return 0;
108     }
109 
110     for (int i = 0; i < r; i++)
111     for (int j = 0; j < c; j++)
112     {
113         point cp = { i, j };
114         spfa(cp);
115     }
116 
117     for (int i = 0; i < r; i++)
118     for (int j = 0; j < c; j++)
119         gather(i, j);
120 
121     cout << ans << endl;
122 
123     return 0;
124 }
125 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线一区二区三区四区五区| 亚洲网站在线播放| 又紧又大又爽精品一区二区| 欧美午夜不卡在线观看免费 | 中文精品99久久国产香蕉| 欧美xxxx在线观看| 久久婷婷丁香| 久久婷婷久久| 亚洲女爱视频在线| 国产亚洲欧洲997久久综合| 国产精品va在线| 国产精品久久久久久久久久久久久久 | 亚洲国产欧美国产综合一区| 欧美国产日韩xxxxx| 久久一区视频| 欧美日韩日韩| 国产综合色在线| 亚洲免费电影在线| 亚洲影院高清在线| 美女精品在线观看| 99综合在线| 久久久久综合网| 欧美视频中文在线看| 国产主播一区二区三区| 99精品欧美一区二区蜜桃免费| 亚欧美中日韩视频| 亚洲尤物在线| 黄色成人在线免费| 亚洲一区二区三区在线观看视频| 久久久爽爽爽美女图片| 亚洲精品激情| 久久精品国产精品亚洲| 欧美日韩国产一中文字不卡| 国产一区二区三区观看| 99精品99| 欧美福利电影在线观看| 亚洲免费网址| 欧美国产成人精品| 韩国精品一区二区三区| 亚洲欧美国产高清va在线播| 亚洲二区视频在线| 久久久久国产精品麻豆ai换脸| 国产精品v亚洲精品v日韩精品| 亚洲人成毛片在线播放女女| 久久亚洲免费| 久久av红桃一区二区小说| 国产精品成人一区二区三区吃奶| 亚洲三级色网| 亚洲成色999久久网站| 久久久久久综合网天天| 国模私拍视频一区| 久久精品一区二区三区四区 | 久久久久免费| 亚洲欧美成人| 国产精品高潮在线| 在线亚洲欧美视频| 欧美黑人在线观看| 免费亚洲一区| 亚洲久久在线| 99re热这里只有精品视频| 欧美护士18xxxxhd| 在线日韩欧美| 欧美大片在线观看| 欧美成年人视频| 日韩午夜电影| 在线一区二区三区四区五区| 欧美日韩亚洲一区二区三区四区 | 欧美精品午夜| 一二三四社区欧美黄| 91久久夜色精品国产九色| 欧美mv日韩mv国产网站| 亚洲美女av黄| 一本大道av伊人久久综合| 国产精品九色蝌蚪自拍| 午夜国产精品视频| 欧美一区二区精品久久911| 国产偷久久久精品专区| 久久久欧美精品| 久久综合伊人77777尤物| 亚洲国产欧美一区二区三区丁香婷| 欧美激情亚洲一区| 欧美三级第一页| 欧美一区二区三区在线免费观看| 亚洲婷婷综合久久一本伊一区| 亚洲午夜小视频| 亚洲天堂偷拍| 在线观看日韩一区| 一本一本a久久| 国产一区再线| 亚洲精品日韩综合观看成人91| 欧美午夜无遮挡| 男人插女人欧美| 国产精品国产三级国产aⅴ浪潮 | 国产精品系列在线| 欧美韩国日本综合| 国产精品久久久久秋霞鲁丝 | 亚洲自拍都市欧美小说| 久久精品亚洲一区二区三区浴池| 亚洲精品视频在线看| 亚洲一区二区三区四区五区黄| 原创国产精品91| 亚洲欧美日韩精品综合在线观看| 亚洲人体影院| 性视频1819p久久| 一区二区激情| 久久免费黄色| 欧美在现视频| 欧美精品激情在线| 久久一区二区三区超碰国产精品| 欧美日韩国产在线一区| 毛片精品免费在线观看| 国产精品一区二区久激情瑜伽| 欧美电影在线| 黄色精品网站| 午夜精品福利在线| 亚洲欧美色一区| 欧美日韩精品一本二本三本| 老牛国产精品一区的观看方式| 国产精品尤物福利片在线观看| 亚洲精品影院| 亚洲久久一区| 欧美不卡一区| 亚洲国内欧美| 91久久亚洲| 免费日韩视频| 亚洲高清免费| 亚洲激情网站| 欧美大片在线看| 欧美激情久久久久| 亚洲黄色一区二区三区| 久久久蜜臀国产一区二区| 久久精品卡一| 国产真实乱偷精品视频免| 亚洲一区二区免费视频| 亚洲一区二区三区精品视频| 欧美日韩岛国| 一区二区激情| 欧美一级在线视频| 国产伦理一区| 欧美一区二区福利在线| 久久精品综合| 极品av少妇一区二区| 久久久无码精品亚洲日韩按摩| 噜噜噜91成人网| …久久精品99久久香蕉国产| 国内外成人免费激情在线视频网站| 亚洲人成欧美中文字幕| 亚洲精品欧美在线| 欧美金8天国| 一区二区三区国产| 亚洲欧美日韩国产中文| 国产拍揄自揄精品视频麻豆| 亚洲免费一在线| 久久综合久久久久88| 亚洲黄色三级| 欧美午夜精品久久久久免费视 | 久久久久99精品国产片| 欧美不卡在线视频| 亚洲毛片一区| 国产模特精品视频久久久久| 欧美一区二区成人6969| 欧美国产一区二区| 午夜精品免费在线| 在线观看91精品国产麻豆| 欧美大胆a视频| 一区二区欧美在线| 久久免费国产| 一区二区毛片| 国产原创一区二区| 欧美成人精品福利| 亚洲午夜高清视频| 欧美成人在线免费观看| 亚洲免费电影在线| 国产在线乱码一区二区三区| 欧美激情一区在线| 久久国产欧美日韩精品| 亚洲另类自拍| 久久综合影视| 亚洲综合日韩在线| 亚洲韩国青草视频| 国产网站欧美日韩免费精品在线观看 | 国产欧美精品一区aⅴ影院| 久热精品视频在线| 亚洲在线视频网站| 亚洲国产国产亚洲一二三| 午夜精品久久久久久99热软件| 在线欧美一区| 国产亚洲欧洲| 国产精品久久一级| 欧美激情一区二区三区在线| 久久福利电影| 亚洲一区精彩视频| 日韩一区二区精品在线观看| 欧美二区在线| 毛片一区二区| 米奇777超碰欧美日韩亚洲| 欧美在线观看一区二区| 中日韩视频在线观看| 日韩视频中文字幕| 亚洲精品久久嫩草网站秘色 |