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

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| 免费观看在线综合色| 亚洲国产日本| 亚洲国产天堂久久综合| 欧美日韩成人一区| 亚洲一区二区综合| 午夜在线精品| 在线观看一区| 亚洲精选视频免费看| 国产精品毛片一区二区三区 | 国产视频欧美| 久久久天天操| 欧美剧在线观看| 午夜国产不卡在线观看视频| 欧美一级一区| 日韩一级裸体免费视频| 亚洲一区成人| 亚洲国产影院| 亚洲一区二区三| 亚洲欧洲一区二区在线播放| 亚洲图片欧美午夜| 亚洲国产精品123| 亚洲一区免费在线观看| 亚洲国产精品久久久久婷婷884 | 欧美第一黄色网| 亚洲免费网站| 狂野欧美一区| 香蕉乱码成人久久天堂爱免费| 久久久久久欧美| 亚洲永久免费视频| 蜜臀99久久精品久久久久久软件| 亚洲欧美另类在线观看| 开心色5月久久精品| 小嫩嫩精品导航| 欧美大成色www永久网站婷| 欧美一级片一区| 欧美精品亚洲二区| 麻豆久久精品| 国产精品五月天| 久久久噜噜噜久久| 国产一区欧美| 亚洲大胆美女视频| 国产精品爽黄69| 亚洲福利小视频| 国内精品99| 亚洲尤物在线| 亚洲一区二区在线看| 久久婷婷色综合| 欧美在线视屏| 国产精品色午夜在线观看| 亚洲激情电影中文字幕| 亚洲国产91精品在线观看| 欧美一级日韩一级| 亚洲欧美色一区| 国产精品国产福利国产秒拍| 亚洲黄色精品| 亚洲欧美第一页| 嫩草影视亚洲| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲电影观看| 亚洲二区在线观看| 久久久欧美一区二区| 久久精品30| 国产主播一区二区| 久久国产精品久久久| 久久久精品午夜少妇| 狠狠色丁香婷综合久久| 久久精彩视频| 久久国产精品99精品国产| 久久久久9999亚洲精品| 国产夜色精品一区二区av| 亚洲欧美日韩一区二区在线| 午夜精品免费在线| 国产午夜亚洲精品理论片色戒| 亚洲欧美日韩国产综合精品二区| 欧美一区亚洲| 狠狠色噜噜狠狠色综合久| 久久理论片午夜琪琪电影网| 欧美成人激情视频| 日韩亚洲欧美一区| 国产精品成人va在线观看| 亚洲欧美成人综合| 两个人的视频www国产精品| 亚洲黄网站在线观看| 欧美日韩另类国产亚洲欧美一级| 一二美女精品欧洲| 久久精品国产第一区二区三区最新章节 | 亚洲一本视频| 久久精品日产第一区二区| 亚洲第一黄色网| 欧美日韩国产天堂| 欧美亚洲在线播放| 亚洲第一级黄色片| 亚洲欧美视频在线观看视频| 国产一区二区三区在线观看精品| 浪潮色综合久久天堂| 夜夜爽99久久国产综合精品女不卡| 欧美一级理论性理论a| 亚洲激情女人| 国产欧美一区二区视频| 麻豆精品视频在线| 亚洲在线视频观看| 欧美大片一区二区| 香蕉久久夜色精品国产使用方法 | 欧美日韩一区二| 性刺激综合网| 亚洲精品免费在线观看| 久久激情视频| 亚洲深夜激情| 亚洲大黄网站| 国产欧美日韩在线视频| 欧美精品久久99久久在免费线| 新狼窝色av性久久久久久| 亚洲精品国久久99热| 久久综合伊人77777麻豆| 亚洲欧美偷拍卡通变态| 亚洲国产日韩欧美| 国产一区二区三区久久久久久久久| 欧美日韩精品一区| 你懂的国产精品永久在线| 欧美一区国产二区| 亚洲一区二区免费在线| 99成人在线| 亚洲国产精品女人久久久| 久久亚洲一区二区三区四区| 亚洲欧美精品suv| 一区二区三区四区五区在线 | 欧美午夜电影一区| 欧美成人午夜激情视频| 久久久青草青青国产亚洲免观| 亚洲亚洲精品三区日韩精品在线视频 | 亚洲精品日本| 亚洲韩日在线| 亚洲电影在线看| 在线观看欧美日韩| 激情欧美一区二区| 国产一区二区三区在线免费观看| 国产欧美日韩另类视频免费观看| 欧美色综合网| 欧美亚州韩日在线看免费版国语版| 欧美日韩播放| 亚洲一区二区三区中文字幕| 中文日韩在线| 亚洲一区二区三区国产| 亚洲综合精品一区二区| 亚洲视频精选| 亚洲欧美日韩综合aⅴ视频| 午夜激情亚洲| 欧美在线国产精品| 亚洲性视频网站| 午夜欧美视频| 亚洲欧美日韩国产一区二区三区| 亚洲精品日韩欧美| 亚洲国产欧美久久| 亚洲国产三级在线| 日韩午夜剧场| 亚洲综合色在线| 欧美一区激情视频在线观看| 久久9热精品视频| 久久午夜精品| 欧美激情一区二区三区在线视频| 欧美日韩在线精品一区二区三区| 欧美午夜视频网站| 国产午夜精品视频| 亚洲黄色精品| 亚洲尤物在线视频观看| 久久精品女人| 亚洲第一天堂无码专区| 日韩视频一区二区| 性18欧美另类| 欧美国产日韩在线| 国产精品久久久久久一区二区三区| 国产欧美日韩综合一区在线播放 | 久久久久网址| 欧美另类一区| 国产性天天综合网| 亚洲欧洲日产国产综合网| 亚洲一区在线观看免费观看电影高清| 久久精品国产99精品国产亚洲性色 | 欧美不卡高清| 99热免费精品| 久久亚洲春色中文字幕| 欧美午夜免费| 亚洲国产精品成人综合| 亚洲欧美国产va在线影院| 欧美sm重口味系列视频在线观看| 一二三四社区欧美黄| 久久五月婷婷丁香社区| 国产精品久久久久久久午夜 | 亚洲大片精品永久免费| 亚洲一区二区三区四区视频| 欧美成人午夜视频| 亚洲午夜视频在线| 欧美二区视频| 狠狠网亚洲精品| 午夜欧美不卡精品aaaaa| 亚洲高清视频一区| 欧美在线免费观看视频| 欧美亚韩一区|