這是乙個最小生成樹,不過唯一的不同是這棵最小生成樹是動態加邊的,所以由此衍生了各種奇怪做法。
先說我的做法,我的做法很暴力,就是僅排序一遍,然後同時執行m個kruskal,總的時間複雜度應該是m^2,卡時間過了。
總之很裸很暴力。
然後orz一下大神的做法:
1 插入排序+kruskal
2 逆序kruskal
3 神奇的找環棄max法
都好神orz
上**:
#include#include#include#include#include#includeusing namespace std;
int fa[6005][201];
int ans[6005];
int total[6005];
struct edge;
edge e[10000+666];
int find(int day,int a)
inline int ra()
while(ch>='0'&&ch<='9')
return x*flag;
}bool cmp(const edge &x,const edge &y)
{ return x.dis
luogu P1340 獸徑管理 WA
約翰農場的牛群希望能夠在 n 個 1 n 200 草地之間任意移動。草地的編號由 1到 n。草地之間有樹林隔開。牛群希望能夠選擇草地間的路徑,使牛群能夠從任一 片草地移動到任一片其它草地。牛群可在路徑上雙向通行。牛群並不能創造路徑,但是他們會保有及利用已經發現的野獸所走出來的路徑 以 下簡稱獸徑 每...
P1340 獸徑管理
miku 這題目很water 只要按照題意模擬就行了,資料似乎沒有重邊,那麼對於加入每一條邊的時候,如果兩端點沒聯通,那麼連上,反之 先連上,形成乙個環,去點環上最大的邊 資料範圍不大對 include include include include includeusing namespace s...
P1340 獸徑管理
約翰農場的牛群希望能夠在 n 個 1 n 200 草地之間任意移動。草地的編號由 1到 n。草地之間有樹林隔開。牛群希望能夠選擇草地間的路徑,使牛群能夠從任一 片草地移動到任一片其它草地。牛群可在路徑上雙向通行。牛群並不能創造路徑,但是他們會保有及利用已經發現的野獸所走出來的路徑 以 下簡稱獸徑 每...