題目連線:
老 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 遇到了...