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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

bzoj1196 [HNOI2006]公路修建问题

發(fā)布時間:2025/6/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 bzoj1196 [HNOI2006]公路修建问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接

二分答案+kruskal最小生成樹判斷

二分費(fèi)用,用滿足費(fèi)用要求的邊來生成樹,判斷能否生成樹

1 #include<iostream> 2 #include<cstdio> 3 #include<cstdlib> 4 #include<string> 5 #include<cstring> 6 #include<cmath> 7 #include<algorithm> 8 #include<ctime> 9 #include<queue> 10 #include<stack> 11 #include<map> 12 #include<set> 13 using namespace std; 14 struct bian 15 { 16 int u,v,c1,c2; 17 }bi[20020]; 18 int getint() 19 { 20 int ret=0;char ch=getchar(); 21 while(ch<'0'||ch>'9')ch=getchar(); 22 while(ch>='0'&&ch<='9')ret*=10,ret+=ch-'0',ch=getchar(); 23 return ret; 24 } 25 int n,k,m,ans,fa[10010]; 26 int find(int x) 27 { 28 return x==fa[x]?x:fa[x]=find(fa[x]); 29 } 30 bool check(int x) 31 { 32 int sum=0; 33 for(int i=1;i<=n;i++)fa[i]=i; 34 for(int i=1;i<=m;i++) 35 { 36 if(bi[i].c1>x)continue; 37 int q=find(bi[i].u),w=find(bi[i].v); 38 if(q!=w) 39 fa[q]=w,sum++; 40 } 41 if(sum<k)return 0; 42 for(int i=1;i<=m;i++) 43 { 44 if(bi[i].c2>x)continue; 45 int q=find(bi[i].u),w=find(bi[i].v); 46 if(q!=w) 47 fa[q]=w,sum++; 48 } 49 if(sum!=n-1)return 0; 50 return 1; 51 } 52 int main() 53 { 54 n=getint(),k=getint(),m=getint();m--; 55 for(int i=1;i<=m;i++) 56 bi[i].u=getint(),bi[i].v=getint(),bi[i].c1=getint(),bi[i].c2=getint(); 57 int l=1,r=30000; 58 while(l<=r) 59 { 60 int mid=(l+r)>>1; 61 if(check(mid))ans=mid,r=mid-1; 62 else l=mid+1; 63 } 64 printf("%d",ans); 65 return 0; 66 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/HugeGun/p/5151628.html

總結(jié)

以上是生活随笔為你收集整理的bzoj1196 [HNOI2006]公路修建问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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