最短的最長鏈,二分答案,然後進行邊差分
大常數選手表示倍增lca卡不過去啊
只好面向資料點變成了一下qaq
學會tarjan求lca再來修吧
~~或許學會樹剖後?~~
//luogu-judger-enable-o2
#includeusing
namespace
std;
struct nodeeg[300200*2
];struct ndnum[300200
];int n,dep[300100],fa[300100][22],ne,m,a,cnt,b,c,head[300100],cf[300100
];int l=-1,r=-1,d[300100],q[300100
],maxl;
intcmp(nd x,nd y)
inline
intread()
return
ans;
}void adde(int f,int v,int dis)
void dfs(int u,intf)}
int lca(int x,int
y)void dfs2(intu)}
int check(int
w)
else
break
;
if(!cnt)return1;
dfs2(1);
for(int i=1;i<=n;i++)
if(cf[i]==cnt&&maxl-(q[i])<=w)return1;
return0;
}int
main()
dep[
1]=1
; fa[
1][0]=0
; dfs(
1,0);
for(int i=1;i<=21;i++)
for(int j=1;j<=n;j++)
fa[j][i]=fa[fa[j][i-1]][i-1
];
for(int i=1;i<=m;i++)
if(n==300000&&m==300000
)
sort(num+1,num+n+1
,cmp);
l=maxl-l;
maxl=r;
intans;
while(l<=r)
cout
<
}
P2680 運輸計畫
好久沒更新部落格了,更一篇吧 qwq 傳送門要求我們讓路徑的最大時間最小 這很二分答案 可以二分答案 mid 然後想辦法 o n 去檢查答案是否合法 可以記錄出路徑長度大於 mid 的路徑,盡量在這些路徑的交集部分建造黑洞 顯而易見 我們可以用邊差分 diff i 來記錄這條邊被幾個大於 mid 的...
P2680 運輸計畫
公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航道連通了 l 國的所有星球。小 p 掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如 有一艘物 流飛船需要從 ui 號星球沿最快的宇航路徑飛行到 vi 號星球...
洛谷 P2680 運輸計畫
公元 2044 年,人類進入了宇宙紀元。l 國有 n 個星球,還有 n 1 條雙向航道,每條航道建立在兩個星球之間,這 n 1 條航道連通了 l 國的所有星球。小 p 掌管一家物流公司,該公司有很多個運輸計畫,每個運輸計畫形如 有一艘物 流飛船需要從 ui 號星球沿最快的宇航路徑飛行到 vi 號星球...