BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案

题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1196

分析:

先把所有路都拆成两条。

二分答案mid,把大于mid的边除去,优先加一级公路,判断能不能加进去k条。

代码:

#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 10050
struct A{
int a,b,v;
}e[N<<2];
int n,m,k,fa[N],usex[N<<1],usey[N<<1];
int find(int x){
return fa[x]^x?fa[x]=find(fa[x]):x;
}
bool check(int x){
for(int i=1;i<=n;i++)fa[i]=i;
int ne=0;
for(int i=1;i<=m;i++){
if(e[i].v>x)continue;
int dx=find(e[i].a),dy=find(e[i].b);
if(dx!=dy){
fa[dx]=dy;
ne++;if(ne==n-1)return 1;
}
}if(ne<k)return 0;
for(int i=m+1;i<=2*m;i++){
if(e[i].v>x)continue;
int dx=find(e[i].a),dy=find(e[i].b);
if(dx!=dy){
fa[dx]=dy;ne++;if(ne==n-1)return 1;
}
}return 0;
}
int main(){
scanf("%d%d%d",&n,&k,&m);m--;
int x,y,z,w;
for(int i=1;i<=m;i++){
scanf("%d%d%d%d",&x,&y,&z,&w);
e[i].a=e[i+m].a=x;
e[i].b=e[i+m].b=y;
e[i].v=z;e[i+m].v=w;
}
int l=0,r=1<<30;
while(l<r){
int mid=l+r>>1;
if(check(mid))r=mid;
else l=mid+1;
}
printf("%d\n",l);
for(int i=1;i<=n;i++)fa[i]=i;
int ne=0;
for(int i=1;i<=m;i++){
if(e[i].v>l)continue;
int dx=find(e[i].a),dy=find(e[i].b);
if(dx!=dy){
fa[dx]=dy;
ne++;
usex[i]=1;
}
}
for(int i=m+1;i<=m+m;i++){
if(e[i].v>l)continue;
int dx=find(e[i].a),dy=find(e[i].b);
if(dx!=dy){
fa[dx]=dy;
ne++;
usey[i-m]=1;
}
}
for(int i=1;i<=m;i++){
if(usex[i])printf("%d 1\n",i);
else if(usey[i])printf("%d 2\n",i);
}
}

BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案的更多相关文章

  1. BZOJ 1196 [HNOI2006]公路修建问题(二分答案+并查集)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1196 [题目大意] 对于每条可能维修的公路可选择修一级公路或者二级公路,价值不同 要求 ...

  2. BZOJ 1196: [HNOI2006]公路修建问题 Kruskal/二分

    1196: [HNOI2006]公路修建问题 Time Limit: 1 Sec  Memory Limit: 162 MB 题目连接 http://www.lydsy.com/JudgeOnline ...

  3. BZOJ 1196 [HNOI2006]公路修建问题:二分 + 贪心生成树check(类似kruskal)

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1196 题意: n个城市,m对城市之间可以修公路. 公路有两种,一级公路和二级公路,在第i对 ...

  4. BZOJ1196 [HNOI2006]公路修建问题 【二分 + Kruskal】

    题目 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨在建立O ...

  5. bzoj 1196: [HNOI2006]公路修建问题 二分+并查集

    题目链接 1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1576  Solved: 909[Submit ...

  6. 洛谷 P2323 [HNOI2006]公路修建问题 解题报告

    P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...

  7. 1196/P2323: [HNOI2006]公路修建问题

    1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2191  Solved: 1258 Descriptio ...

  8. 【最小生成树】BZOJ 1196: [HNOI2006]公路修建问题

    1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1435  Solved: 810[Submit][Sta ...

  9. BZOJ 1196: [HNOI2006]公路修建问题( MST )

    水题... 容易发现花费最大最小即是求 MST 将每条边拆成一级 , 二级两条 , 然后跑 MST . 跑 MST 时 , 要先加 k 条一级road , 保证满足题意 , 然后再跑普通的 MST . ...

随机推荐

  1. Python 可视化TVTK CubeSource管线初使用

    CubeSource对象是长方体数据源对象.本次在安装成功TVTK库的基础上显示一个长方体对象.通过以下代码,我们设置一个长宽高分别为1.0,2.0,3.0的长方体数据源并通过管线显示出来. from ...

  2. 排序算法入门之冒泡排序及其优化(java实现)

    冒泡排序思想(从小到大): 比较相邻两个元素,如果第一个元素比第二个元素大,就交换他们的位置.第一趟,从第一个元素开始,第一个元素和第二个元素比较,如果第一个元素比第二个元素大,则交换位置:接下来比较 ...

  3. spring事务探索

    spring自建事务管理模块.而且这个事务管理是一个抽象设计,可以应用到很多场合,包括普通的DataSource,jta,jms和hibernate上.  要正确使用spring的事务,首先需要了解s ...

  4. Mybatis与Ibatis比较

    随着开发团队转投Google Code旗下,ibatis3.x正式更名为Mybatis  虽然从正式版发布至今也有近一年时间,官方也非常友好的提供了中文版的使用手册,不过相信很多人还在项目中使用iba ...

  5. 乐学习知选择--我的J2EE技术历程

    转眼换工作已经两个多月了,转眼今年已经到9月份了,转眼女朋友也来到了自己身边.有太多的转眼,如今在这个经理不在的早晨,可以肆意的点点这里看看那里,想想自己,有点吉利思的感觉. 这两个多月,知道了什么叫 ...

  6. 安装VirtualBox后 不能选择64bit的系统

    之前在台式机上安装VirtualBox,一切OK,能够安装64位的任何版本iso包今天在hp笔记本上安装,安装VirtualBox完毕后,只能选择32位的iso版本. 而我目前只有一个linux64b ...

  7. Ubuntu硬盘空间清理

    1.删除多余的安装下载文件: sudo aptitude autoclean sudo aptitude clean 2.删除多余的内核版本: sudo apt-get autoremove 4.去/ ...

  8. [Luogu 4135] 作诗

    Description 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M ...

  9. DDGScreenShot—截取图片的任意部分

    写在前面 DDGScreenShot 库提供了截取任意图片的功能, 支持手势截图,当然,输入任意的区域也可以,下面看看具体的代码 代码如下: 方法封装 /** ** 用手势截图(截取图片的任意部分) ...

  10. Invoke-ASCmd 部署SSAS database

    Install-Module -Name SqlServer -RequiredVersion 21.0.17099 -AllowClobberInvoke-ASCmd -Server 10.162. ...