HDU 5253 連線的管道

2021-08-05 19:18:43 字數 1323 閱讀 8661

題目連線:

老 jack 有一片農田,以往幾年都是靠天吃飯的。但是今年老天格外的不開眼,大旱。所以老 jack 決定用管道將他的所有相鄰的農田全部都串聯起來,這樣他就可以從遠處引水過來進行灌溉了。當老 jack 買完所有鋪設在每塊農田內部的管道的時候,老 jack 遇到了新的難題,因為每一塊農田的地勢高度都不同,所以要想將兩塊農田的管道鏈結,老 jack 就需要額外再購進跟這兩塊農田高度差相等長度的管道。

現在給出老 jack農田的資料,你需要告訴老 jack 在保證所有農田全部可連通灌溉的情況下,最少還需要再購進多長的管道。另外,每塊農田都是方形等大的,一塊農田只能跟它上下左右四塊相鄰的農田相連通。

第一行輸入乙個數字t(t≤10),代表輸入的樣例組數

輸入包含若干組測試資料,處理到檔案結束。每組測試資料佔若干行,第一行兩個正整數 n,m(1≤n,m≤1000),代表老 jack 有n行*m列個農田。接下來 n 行,每行 m 個數字,代表每塊農田的高度,農田的高度不會超過100。數字之間用空格分隔。

對於每組測試資料輸出兩行:

第一行輸出:」case #i:」。i代表第i組測試資料。

第二行輸出 1 個正整數,代表老 jack 額外最少購進管道的長度。

2 4 3

9 12 4

7 8 56

32 32 43

21 12 12

2 3

34 56 56

12 23 4

case #1:

82 case #2:

74把每塊田地標號,在init函式裡用乙個巧妙的方法,因為要連線所有的田地,採用搜尋的方法,但是不需要4個方向,兩個方向就足夠了,陣列一定要開大!!!剩下的就是最小生成樹的內容了

最小生成樹

#include

#include

#include

#define maxn 1010

using

namespace

std;

int kase, index;

int n, m;

int pre[5000005];

intmap[maxn][maxn];

int to[4][2] = ,};

struct node cnt[5000005];

void init() }}

}}int find(int x)

bool cmp(node a, node b)

int kruskal ()

}return ans;

} int main ()

return

0;}

hdu 5253連線的管道

傳送門 題意 農夫連線農田,每塊農田的相對高度差是建圖的權值。最小生成樹的入門模版題,不錯不錯 include include include using namespace std const int maxn 1010 int fa 5000005 int maze maxn maxn int ...

HDU5253 連線的管道

problem description 老 jack 有一片農田,以往幾年都是靠天吃飯的。但是今年老天格外的不開眼,大旱。所以老 jack 決定用管道將他的所有相鄰的農田全部都串聯起來,這樣他就可以從遠處引水過來進行灌溉了。當老 jack 買完所有鋪設在每塊農田內部的管道的時候,老 jack 遇到了...

HDOJ 5253 連線的管道(最小生成樹)

problem description 老 jack 有一片農田,以往幾年都是靠天吃飯的。但是今年老天格外的不開眼,大旱。所以老 jack 決定用管道將他的所有相鄰的農田全部都串聯起來,這樣他就可以從遠處引水過來進行灌溉了。當老 jack 買完所有鋪設在每塊農田內部的管道的時候,老 jack 遇到了...