日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客 吉吉王国

發(fā)布時(shí)間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客 吉吉王国 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

鏈接:https://ac.nowcoder.com/acm/problem/210473
來源:牛客網(wǎng)

吉吉王國(guó)有nn個(gè)城市,其中11號(hào)城市就是吉吉王國(guó)的首都,并且吉吉王國(guó)有n-1n?1條道路,每條道路都有一個(gè)長(zhǎng)度dd,你可以從任意一點(diǎn)uu到達(dá)任意一點(diǎn)vv。但是最近吉吉王國(guó)發(fā)生了動(dòng)亂,除了首都外,每個(gè)只有一條道路連向的城市出現(xiàn)了反叛軍。

這些城市的反叛軍開始向吉吉王國(guó)的首都發(fā)起了進(jìn)攻,如果讓他們到達(dá)首都,那么吉吉國(guó)王就要換人了。吉吉國(guó)王現(xiàn)在需要快速切斷一些道路,使得沒有一個(gè)城市的反叛軍可以到達(dá)首都。但是由于物資的限制,他能切斷的道路的總長(zhǎng)度和不能超過mm,并且要保證切斷道路盡量快,因此切斷的道路中最長(zhǎng)的長(zhǎng)度要盡可能小。

現(xiàn)在趕緊告訴吉吉國(guó)王切斷的道路的最長(zhǎng)長(zhǎng)度在最小的時(shí)候是多少吧。
輸入描述:
第一行兩個(gè)整數(shù)n, mn,m。
接下來n-1n?1行每行三個(gè)整數(shù)u, v,du,v,d表示城市uu和城市vv有一條長(zhǎng)度為dd的道路。
輸出描述:
如果存在方案使得首都安全,輸出最小的最長(zhǎng)長(zhǎng)度,否則輸出-1。

思路: 和loves rinne很像,可以說是加強(qiáng)版 思路是因?yàn)橛锌傞L(zhǎng)m和最長(zhǎng)值最小的限制,因此可以使用二分答案, 二分最長(zhǎng)值,用總長(zhǎng)限制m來檢驗(yàn)是否符合要求 #include<bits/stdc++.h> using namespace std; #define N 1010const int INF=1e7+10;int n,m; int e[2*N],ne[2*N],w[N*2],h[N],idx=0; int f[N]; //與loves ronne一樣,以u(píng)為根的子樹的最小值void add(int a,int b,int c){e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++; }void dfs(int u,int pre,int len){bool is_leaf=true;for(int i=h[u];~i;i=ne[i]){int j=e[i];if(j==pre) continue;dfs(j,u,len);is_leaf=false;f[u]+=min(f[j],w[i]>len?INF:w[i]);}if(is_leaf) f[u]=INF;; }int main(){memset(h,-1,sizeof h);scanf("%d%d",&n,&m);for(int i=1;i<n;i++){int u,v,d;scanf("%d%d%d",&u,&v,&d);add(u,v,d),add(v,u,d);}int ans=0;int l=0,r=1e7+10;while(l<r){int mid=l+r>>1;memset(f,0,sizeof f);dfs(1,-1,mid);if(f[1]<=m) r=mid,ans=r;else l=mid+1;}if(!ans) puts("-1");else printf("%d\n",ans);return 0; }

總結(jié)

以上是生活随笔為你收集整理的牛客 吉吉王国的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。