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

posts - 18,  comments - 5,  trackbacks - 0
一、題目描述

Description

On a grid map there are n little men and n houses. In each unit time, every little man can move one unit step, either horizontally, or vertically, to an adjacent point. For each little man, you need to pay a $1 travel fee for every step he moves, until he enters a house. The task is complicated with the restriction that each house can accommodate only one little man.

Your task is to compute the minimum amount of money you need to pay in order to send these n little men into those n different houses. The input is a map of the scenario, a '.' means an empty space, an 'H' represents a house on that point, and am 'm' indicates there is a little man on that point.

You can think of each point on the grid map as a quite large square, so it can hold n little men at the same time; also, it is okay if a little man steps on a grid with a house without entering that house.

Input

There are one or more test cases in the input. Each case starts with a line giving two integers N and M, where N is the number of rows of the map, and M is the number of columns. The rest of the input will be N lines describing the map. You may assume both N and M are between 2 and 100, inclusive. There will be the same number of 'H's and 'm's on the map; and there will be at most 100 houses. Input will terminate with 0 0 for N and M.

Output

For each test case, output one line with the single integer, which is the minimum amount, in dollars, you need to pay.

Sample Input

2 2
.m
H.
5 5
HH..m
.....
.....
.....
mm..H
7 8
...H....
...H....
...H....
mmmHmmmm
...H....
...H....
...H....
0 0

Sample Output

2
10
28

二、分析
      一個簡單的最優(yōu)匹配問題,但要注意它要求的是最小權(quán)匹配,可以改成最大權(quán)匹配(第57行)用KM算法,詳細(xì)算法:匹配問題
三、代碼
 1#include<iostream>
 2#include<cmath>
 3using namespace std;
 4int n, m;
 5char str[101];
 6int hc, home[100][2];
 7int mc, man[100][2];
 8int map[100][100];
 9int lx[100], ly[100];
10int mat[100];
11bool vx[100], vy[100];
12int  slack[100];
13bool dfs(int u)
14{
15    vx[u] = true;
16    for(int v=0; v<mc; v++)
17    {
18        if(!vy[v] && lx[u]+ly[v] == map[u][v])
19        {
20            vy[v] = true;
21            if(mat[v]==-1 || dfs(mat[v]))
22            {
23                mat[v] = u;
24                return true;
25            }

26        }

27        else if(lx[u]+ly[v] > map[u][v])
28            slack[v] = min(slack[v], lx[u] + ly[v] - map[u][v]);
29    }

30    return false;
31}

32int main()
33{
34    while(1)
35    {
36        scanf("%d%d"&n, &m);
37        if(n==0 && m==0)
38            break;
39        hc = mc = 0;
40        for(int i=0; i<n; i++)
41        {
42            scanf("%s", str);
43            for(int j=0; j<m; j++)
44            {
45                if(str[j] == 'H')
46                {
47                    home[hc][0= i; home[hc++][1= j;
48                }

49                else if(str[j] == 'm')
50                {
51                    man[mc][0= i; man[mc++][1= j;
52                }

53            }

54        }

55        for(int i=0; i<mc; i++)
56            for(int j=0; j<mc; j++)
57                map[i][j] = 200 - abs(man[i][0]-home[j][0]) - abs(man[i][1]-home[j][1]);
58        memset(lx, 0sizeof(lx));
59        memset(ly, 0sizeof(ly));
60        for(int u=0; u<mc; u++)
61            for(int v=0; v<hc; v++)
62                lx[u] = max(lx[u], map[u][v]);
63        memset(mat, -1sizeof(mat));
64        for(int u=0; u<mc; u++)
65        {
66            while(1)
67            {
68                memset(vx, 0sizeof(vx));
69                memset(vy, 0sizeof(vy));
70                for(int j=0; j<mc; j++)
71                    slack[j] = INT_MAX;
72                if(dfs(u))
73                    break;
74                int al = INT_MAX;
75                for(int i=0; i<mc; i++)
76                    if(!vy[i])
77                        al = min(al, slack[i]);
78                for(int i=0; i<mc; i++)
79                {
80                    if(vx[i]) lx[i] -= al;
81                    if(vy[i]) ly[i] += al;
82                }

83            }

84        }

85        int res = 0;
86        for(int v=0; v<mc; v++)
87            res += 200 - map[mat[v]][v];
88        printf("%d\n", res);
89    }

90}
posted on 2009-06-29 14:42 Icyflame 閱讀(698) 評論(0)  編輯 收藏 引用 所屬分類: 解題報告
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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国产一区二区三精品乱码| 国产欧美日韩伦理| 欧美成人一区二免费视频软件| 欧美aaa级| 国产精品综合视频| 亚洲国产天堂久久综合网| 亚洲一区在线播放| 欧美高清一区二区| 亚洲一区高清| 欧美人体xx| 亚洲高清在线| 久久久91精品| 亚洲一区二区三区久久| 国产精品免费久久久久久| 亚洲美女区一区| 美女久久一区| 欧美一区二区三区在线观看| 欧美日韩一区在线| 亚洲精品精选| 欧美a级一区| 久久精品理论片| 国产一区二区三区av电影| 亚洲专区在线视频| 久久精品二区亚洲w码| 国产精品久久久久久亚洲调教| 欧美一区二区三区精品| 亚洲婷婷综合色高清在线| 欧美人成在线| 久久日韩粉嫩一区二区三区| 欧美一级视频免费在线观看| 亚洲国产免费| 亚洲一区在线播放| 91久久久亚洲精品| 亚洲国产高清aⅴ视频| 久久综合给合| 欧美一区二区在线视频| 亚洲精品少妇30p| 亚洲综合色激情五月| 国产精品制服诱惑| 亚洲国内精品| 欧美精品一区三区在线观看| 欧美一区成人| 欧美午夜精品久久久久久浪潮| 在线天堂一区av电影| 夜夜嗨网站十八久久| 在线观看久久av| 亚洲国产精品久久久久婷婷884 | 亚洲伦理久久| 欧美激情综合五月色丁香| 亚洲人成毛片在线播放女女| 亚洲尤物影院| 亚洲一区二区三区精品在线| 亚洲一区国产精品| 亚洲精品久久视频| 久久亚洲春色中文字幕久久久| 在线电影一区| 欧美一区免费视频| 性欧美超级视频| 欧美在线视频观看免费网站| 伊人激情综合| 性欧美大战久久久久久久久| 在线日韩av| 日韩视频亚洲视频| 国产视频一区二区在线观看| 欧美搞黄网站| 在线欧美一区| 久久影视三级福利片| 亚洲一区二区免费| 欧美区在线播放| 亚洲日韩视频| 国产中文一区二区| 亚洲人成在线影院| 亚洲精品一区二区网址| 美女脱光内衣内裤视频久久网站| 亚洲一区免费| 欧美天天综合网| 免费看亚洲片| 亚洲国产综合在线看不卡| 老牛国产精品一区的观看方式| 快播亚洲色图| 国产精品腿扒开做爽爽爽挤奶网站| 免费在线成人| 最近看过的日韩成人| 欧美精品久久一区| a4yy欧美一区二区三区| 欧美一区二区三区在线免费观看| 亚洲免费在线精品一区| 久久精品视频免费| 免费不卡中文字幕视频| 日韩亚洲国产欧美| 久久精品日产第一区二区| 嫩草影视亚洲| 一区二区三区高清| 国产精品综合色区在线观看| 久久视频精品在线| 最新精品在线| 亚洲激情av| 欧美日本在线视频| 久久婷婷蜜乳一本欲蜜臀| 永久555www成人免费| 欧美日本在线播放| 亚洲欧美综合一区| 欧美一区二区三区电影在线观看| 黄网动漫久久久| 欧美一区二区黄色| 亚洲国产另类 国产精品国产免费| 亚洲一区影音先锋| 在线观看成人小视频| 国产精品国产三级国产a| 一本久道久久久| 久久一日本道色综合久久| 一本色道久久综合亚洲精品不| 欧美电影免费网站| 午夜久久99| 亚洲免费观看| 欧美二区在线播放| 性色av一区二区三区| 亚洲精品少妇网址| 国产色综合天天综合网| 欧美日本韩国在线| 猛干欧美女孩| 久久高清免费观看| 亚洲主播在线观看| 亚洲精品美女久久久久| 美女视频黄免费的久久| 午夜精品短视频| 国产日韩一区二区三区| 欧美精品一区二| 久久久久久婷| 91久久国产综合久久蜜月精品| 久久国产精品免费一区| 在线电影一区| 国产亚洲成av人在线观看导航 | 小黄鸭精品aⅴ导航网站入口| 亚洲缚视频在线观看| 老司机午夜精品视频| 午夜精品视频网站| 亚洲视频axxx| 韩日视频一区| 欧美日韩国产精品专区| 麻豆精品视频在线观看| 久久久久成人精品免费播放动漫| 午夜视频一区在线观看| 亚洲天堂av电影| 中日韩美女免费视频网址在线观看 | 亚洲欧美偷拍卡通变态| 99精品视频免费全部在线| 最新中文字幕亚洲| 亚洲日本在线视频观看| 亚洲人在线视频| 亚洲精品欧美日韩专区| 亚洲经典视频在线观看| 亚洲乱码视频| 亚洲视频一区二区免费在线观看| aa国产精品| 亚洲一区免费在线观看| 亚洲综合不卡| 欧美在线一区二区| 老司机aⅴ在线精品导航| 蜜臀久久99精品久久久久久9| 久久中文字幕导航| 欧美极品aⅴ影院| 国产精品分类| 国产在线国偷精品产拍免费yy| 激情综合中文娱乐网| 亚洲精品美女在线| 中国成人黄色视屏| 久久www免费人成看片高清 | 国产精品九九久久久久久久| 国产精品免费aⅴ片在线观看| 国产日韩亚洲欧美综合| 在线播放日韩专区| 99亚洲一区二区| 欧美诱惑福利视频| 欧美高清视频www夜色资源网| 日韩视频免费观看| 午夜精品久久久久久久99水蜜桃 | 欧美激情免费观看| 久久久91精品国产一区二区精品| 另类综合日韩欧美亚洲| 亚洲区一区二区三区| 亚洲欧美怡红院| 欧美大片免费观看| 国产精品最新自拍| 亚洲欧洲一区二区三区久久| 午夜精品理论片| 亚洲国产精品久久久久秋霞蜜臀| 亚洲午夜高清视频| 蜜桃av一区二区| 国产偷久久久精品专区| 亚洲精品中文字幕在线| 久久精品99国产精品| 日韩视频在线免费观看| 久久漫画官网| 国产精品国产三级国产普通话99| 亚洲成人中文| 久久精品国产96久久久香蕉| 日韩写真视频在线观看| 久久野战av| 国产一区二区三区免费不卡 |