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

posts - 7,comments - 3,trackbacks - 0

Transfer water

Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)
Total Submission(s): 1770    Accepted Submission(s): 650


Problem Description
XiaoA lives in a village. Last year flood rained the village. So they decide to move the whole village to the mountain nearby this year. There is no spring in the mountain, so each household could only dig a well or build a water line from other household. If the household decide to dig a well, the money for the well is the height of their house multiplies X dollar per meter. If the household decide to build a water line from other household, and if the height of which supply water is not lower than the one which get water, the money of one water line is the Manhattan distance of the two households multiplies Y dollar per meter. Or if the height of which supply water is lower than the one which get water, a water pump is needed except the water line. Z dollar should be paid for one water pump. In addition,therelation of the households must be considered. Some households may do not allow some other households build a water line from there house. Now given the 3‐dimensional position (a, b, c) of every household the c of which means height, can you calculate the minimal money the whole village need so that every household has water, or tell the leader if it can’t be done.
 

Input
Multiple cases. 
First line of each case contains 4 integers n (1<=n<=1000), the number of the households, X (1<=X<=1000), Y (1<=Y<=1000), Z (1<=Z<=1000). 
Each of the next n lines contains 3 integers a, b, c means the position of the i‐th households, none of them will exceeded 1000. 
Then next n lines describe the relation between the households. The n+i+1‐th line describes the relation of the i‐th household. The line will begin with an integer k, and the next k integers are the household numbers that can build a water line from the i‐th household. 
If n=X=Y=Z=0, the input ends, and no output for that. 
 

Output
One integer in one line for each case, the minimal money the whole village need so that every household has water. If the plan does not exist, print “poor XiaoA” in one line. 
 

Sample Input
2 10 20 30 1 3 2 2 4 1 1 2 2 1 2 0 0 0 0
 

Sample Output
30
Hint
In 3‐dimensional space Manhattan distance of point A (x1, y1, z1) and B(x2, y2, z2) is |x2‐x1|+|y2‐y1|+|z2‐z1|.
 

Source
 

Recommend
lcy
 

今年大連賽區網絡賽一道題.....我怎么一點印象也沒有呢.....
一道赤裸的最小樹形圖,除了數據有點大而已.....
思路:因為沒有根,所以虛擬一個根,所有點和這個根連線,權值是該點造井的價格,這樣以這個根出發,構造出來的最小樹形圖就是最小的費用了。
代碼:
#include <cstdio>
#include 
<cstring>
#include 
<cmath>
#include 
<iostream>
using namespace std;

const int maxn = 1100;
const int maxm = 1100000;
const int maxint = 0x3fffffff;

struct edge
{
    
int u, v, w;
    edge(){}
    edge(
int u1, int v1, int w1) : u(u1), v(v1), w(w1){}
} e[maxm];

int root, n, edgeNum, vis[maxn], pre[maxn], belong[maxn], in[maxn];
int a[maxn], b[maxn], c[maxn];
int Abs(int a)
{
    
return a > 0 ? a : -a;
}

int Dis(int i, int j)
{
    
return Abs(a[i] - a[j]) + Abs(b[i] - b[j]) + Abs(c[i] - c[j]);
}

int solve()
{
    
int i, j, k, num, sum = 0;
    n
++;
    
while (1)
    {
        
for (i = 0; i < n; ++i)
            
in[i] = maxint;
        
for (i = 0; i < edgeNum; ++i)
        {
            
if (in[e[i].v] > e[i].w && e[i].u != e[i].v)
            {
                pre[e[i].v] 
= e[i].u;
                
in[e[i].v] = e[i].w;
            }
        }

        memset(vis, 
-1sizeof(vis));
        memset(belong, 
-1sizeof(belong));
        
in[root] = 0;
        
for (num = 0, i = 0; i < n; ++i)
        {
            sum 
+= in[i];
            j 
= i;
            
while (vis[j] != i && belong[j] == -1 && j != root)
            {
                vis[j] 
= i;
                j 
= pre[j];
            }
            
if (vis[j] == i)
            {
                
for (k = pre[j]; k != j; k = pre[k])
                    belong[k] 
= num;
                belong[j] 
= num++;
            }
        }

        
if (!num) return sum;
        
for (i = 0; i < n; ++i)
            
if (belong[i] == -1)
                belong[i] 
= num++;

        
for (i = 0; i < edgeNum; ++i)
        {
            
int j = e[i].v;
            e[i].u 
= belong[e[i].u];
            e[i].v 
= belong[e[i].v];
            e[i].w 
-= in[j];
        }
        n 
= num;
        root 
= belong[root];
    }
    
return sum;
}

int main()
{
    
int x, y, z, i, j, k, ii, d;
    
while (scanf("%d%d%d%d"&n, &x, &y, &z) != EOF)
    {
        
if (!&& !&& !&& !z) break;
        
for (edgeNum = 0, i = 1; i <= n; ++i)
        {
            scanf(
"%d%d%d"&a[i], &b[i], &c[i]);
            e[edgeNum
++= edge(0, i, c[i] * x);
        }
        
for (i = 1; i <= n; ++i)
        {
            scanf(
"%d"&k);
            
while (k--)
            {
                scanf(
"%d"&ii);
                
if (i == ii) continue;
                d 
= Dis(i, ii);
                
if (c[i] >= c[ii])
                    e[edgeNum
++= edge(i, ii, d * y);
                
else
                    e[edgeNum
++= edge(i, ii, d * y + z);
            }
        }

        root 
= 0;
        printf(
"%d\n", solve());
    }
    
return 0;
}
posted on 2011-10-15 22:20 LLawliet 閱讀(246) 評論(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>
            欧美亚洲免费| 亚洲一区二区av电影| 在线视频精品一| 欧美成人日韩| 欧美成人一区二区三区片免费| 国产丝袜美腿一区二区三区| 性感少妇一区| 久久嫩草精品久久久精品| 亚洲国产精品成人综合| 亚洲国产激情| 蘑菇福利视频一区播放| 日韩一区二区电影网| 日韩午夜av在线| 国产精品色在线| 久久久精品国产免费观看同学| 久久精品一区二区三区四区 | 亚洲国产另类久久久精品极度| 男女激情久久| 亚洲资源av| 久久精品亚洲乱码伦伦中文| 亚洲国产精品一区二区第一页| 91久久黄色| 国产伦精品一区二区三区视频黑人 | 久久久国产成人精品| 最新日韩av| 一区二区三区精品视频在线观看| 国产精品一区二区久久久| 欧美电影免费观看网站| 韩国欧美一区| 夜夜嗨一区二区三区| 欧美三日本三级三级在线播放| 久久成人国产| 欧美一区二区三区精品| 国产精品视频久久一区| 巨乳诱惑日韩免费av| 欧美日韩你懂的| 久久九九免费| 欧美日韩一区二区高清| 久久综合导航| 国产精品久久久免费| 欧美mv日韩mv国产网站| 国产精品伦子伦免费视频| 欧美大成色www永久网站婷| 国产精品青草久久| 亚洲高清视频一区二区| 黄色另类av| 亚洲一区二区视频| 夜夜嗨网站十八久久| 久久久久久久高潮| 欧美一区二区免费| 欧美三级视频| 亚洲精品视频在线| 亚洲电影专区| 欧美激情精品久久久久久大尺度| 欧美高清免费| 蜜臀a∨国产成人精品| 国产精品久久久久久影视| 亚洲国产二区| 在线播放中文一区| 香蕉久久a毛片| 欧美一区二区精品久久911| 欧美日韩一级视频| 亚洲免费观看在线观看| 亚洲精品久久久久久一区二区 | 午夜精品久久久久久99热| 欧美精品在线视频观看| 欧美激情日韩| 最新日韩在线视频| 久久综合狠狠| 欧美α欧美αv大片| 狠狠色综合色区| 久久国产视频网站| 免费精品视频| 亚洲电影在线观看| 麻豆精品一区二区av白丝在线| 麻豆av一区二区三区久久| 黄色免费成人| 鲁大师成人一区二区三区| 亚洲国产精品v| 日韩一区二区电影网| 欧美天堂在线观看| 亚洲一区在线播放| 久久久久久久一区| 精品91免费| 欧美日本高清| 亚洲综合色丁香婷婷六月图片| 欧美专区在线观看| 伊甸园精品99久久久久久| 麻豆精品91| 99re这里只有精品6| 亚洲免费视频网站| 国产一区二区成人| 免费日韩成人| 一区二区三区精品视频在线观看| 欧美在线视频在线播放完整版免费观看 | 久久成人一区| 亚洲黄色在线观看| 亚洲欧美国产制服动漫| 国产综合第一页| 欧美电影免费观看| 亚洲图片欧洲图片av| 美女主播一区| 这里只有精品电影| 狠狠综合久久| 欧美日韩美女在线| 久久精品午夜| 一本色道久久加勒比88综合| 久久久国产视频91| 亚洲视频成人| 亚洲国产高清一区| 国产精品国产三级国产aⅴ浪潮 | 亚洲图片欧美午夜| 欧美阿v一级看视频| 午夜日韩激情| 亚洲精品一区二区在线观看| 国产精品视频你懂的| 老鸭窝亚洲一区二区三区| 亚洲中午字幕| 99人久久精品视频最新地址| 久久综合狠狠| 性伦欧美刺激片在线观看| 尤物精品国产第一福利三区| 国产精品v日韩精品v欧美精品网站| 久久精品色图| 亚洲免费在线视频| 亚洲精品视频在线观看网站| 免费在线观看成人av| 午夜影视日本亚洲欧洲精品| 日韩一区二区精品在线观看| 一区在线影院| 国产日韩精品视频一区| 欧美午夜片欧美片在线观看| 欧美国产精品| 美女精品在线| 久久久成人精品| 欧美一区成人| 先锋影音久久| 亚洲影院一区| 亚洲午夜国产一区99re久久| 亚洲日本精品国产第一区| 免费亚洲电影在线观看| 久久综合色8888| 久久精品国产第一区二区三区最新章节| 99精品视频免费| 日韩天堂在线观看| 亚洲精品日本| 亚洲毛片播放| 亚洲美女av在线播放| 99re6这里只有精品视频在线观看| 亚洲黄色影片| 亚洲欧洲日夜超级视频| 亚洲日本成人网| 亚洲日本欧美日韩高观看| 亚洲久久一区| 99re6这里只有精品| 亚洲私人影院在线观看| 亚洲视频免费| 欧美伊人影院| 久久久亚洲成人| 欧美大胆成人| 亚洲激情在线激情| 日韩性生活视频| 国产精品99久久不卡二区| 亚洲专区国产精品| 欧美在线播放| 欧美成年人视频网站| 欧美理论电影在线观看| 国产精品v片在线观看不卡| 国产区日韩欧美| 曰韩精品一区二区| 日韩视频国产视频| 亚洲欧美乱综合| 久久深夜福利免费观看| 亚洲国产欧美在线人成| 一区二区三区视频在线观看| 欧美一级大片在线观看| 久久久久久国产精品mv| 欧美理论电影在线播放| 国产精品一区二区你懂得 | 国产精品入口| 在线精品高清中文字幕| 夜夜爽夜夜爽精品视频| 性高湖久久久久久久久| 欧美激情第1页| 亚洲影院色无极综合| 免费不卡亚洲欧美| 国产精品毛片一区二区三区| 黄色在线成人| 亚洲在线一区二区三区| 欧美成人精品在线视频| 亚洲午夜精品| 免费国产自线拍一欧美视频| 国产精品久久久久久久久免费樱桃| 国内外成人在线视频| 在线综合亚洲欧美在线视频| 欧美.www| 欧美亚洲一区二区三区| 欧美日韩一级黄| 亚洲区中文字幕| 免费观看欧美在线视频的网站|