**
usaco 2005 march silver
題目大意
有n(2-2000)個農場,m(1-10000)條通路連通各個農場,長度不超109,要求遍歷全部的農場,且每走1單位長度就要消耗一單位水,每到乙個農場可以把自己的水充滿,求最小的水箱容量。
樣例輸入
3 31 2 23
2 3 1000
1 3 43
樣例輸出
43
由於要遍歷每乙個節點,很容易想到是用最小生成樹的解法。本題用prim和kruskal都是可行解法,蒟蒻的m3於是就愉快的決定例程用kruskal啦~
求水箱的最小容量,即是求該生成樹上的最大邊權(因為每到乙個節點自動原地滿血復活,所以求最大代價即是求最長邊的長度)
#include #include #include #include #include #include using namespace std;
const int maxn=10000+5;
int n,m,ans;
int father[maxn];
struct dataline[maxn];
bool cmp(data a,data b)
void init()}
int findfa(int x)
int main()
sort(line+1,line+1+m,cmp); init();
for(int i=1;i<=m;i++)
printf("%d\n",ans);
return 0;
}
POJ2395 Out of Hay 最小生成樹
題意 農場之間相互連線,要求輸出最小連通中最長的那條邊的權值 要點 又是一道模板題,poj上最小生成樹咋這麼多水題,要做點難的啊。15347115 seasonal 2395 accepted 292k 79ms c 892b 2016 04 03 13 07 56 include include ...
POJ 2395 解題報告
題意 找到最小生成樹里的最大邊。思路 只需要將裸板子中,最小生成樹一直累加邊權的語句sum edge i w 更改為 if edge i w max max edge i w 最後輸出max即可。本人ac include include include include include include...
poj 2395 prime的遞迴實現
求最小水桶的大小,每到達乙個農村就能把水桶補滿。可見是用生成最小樹,求最大邊。關於prime個人感覺用遞迴實現會少乙個for的時間。本題的坑 輸入邊的時候要找最小的,不然會出錯。1 include2 include3 using namespace std 4const int inf 0x3f3f...