题目链接


Solution

二分答案+并查集.

由于考虑到是要求花费的最小值,直接考虑到二分.

然后对于每一个二分出来的答案,模拟 \(Kruskal\) 的过程再做一遍连边.

同时用并查集维护联通块信息.

最后看连的边数以及\(1\)边是否满足要求即可.


Code

#include<bits/stdc++.h>
using namespace std;
const int maxn=20008;
int n,k,m,v[maxn];
struct sj
{int x,y,w1,w2,id;}a[maxn];
int fa[maxn],ans,pd[maxn]; int find(int x)
{if(fa[x]==x)return x;else return fa[x]=find(fa[x]);}
void join(int x,int y)
{x=find(x),y=find(y);if(x!=y)fa[x]=y;}
bool cmp(sj x,sj y){return x.w1<y.w1;}
int read()
{
int f=1,w=0; char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){w=w*10+ch-'0';ch=getchar();}
return f*w;
} bool jud(int x)
{
for(int i=1;i<=n;i++)fa[i]=i;int cnt=0,js=0;
memset(v,0,sizeof(v));
sort(a+1,a+m,cmp);
for(int i=1;i<m;i++){
if(find(a[i].x)!=find(a[i].y))
if(a[i].w1<=x)cnt++,join(a[i].x,a[i].y),v[a[i].id]=1;}
if(cnt<k)return 0;
for(int i=1;i<m;i++)
{
if(!v[a[i].id])
if(find(a[i].x)!=find(a[i].y))
if(a[i].w2<=x)cnt++,join(a[i].x,a[i].y),v[a[i].id]=2;
}
if(cnt<n-1)return 0;
for(int i=1;i<m;i++)
pd[i]=v[i];
return 1;
} int main()
{
n=read(),k=read(),m=read();
for(int i=1;i<m;i++)
{a[i].x=read();a[i].y=read();a[i].id=i;
a[i].w1=read();a[i].w2=read();}
int l=1,r=maxn*20;
while(l<=r)
{
int mid=(l+r)/2;
if(jud(mid)){ans=mid,r=mid-1;}
else l=mid+1;
}
printf("%d\n",ans);
for(int i=1;i<m;i++)
if(pd[i])
printf("%d %d\n",i,pd[i]);
}

[HNOI2006]公路修建问题 (二分答案,并查集)的更多相关文章

  1. [BZOJ1196][HNOI2006]公路修建问题 二分答案+最小生成树

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

  2. 洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]

    题目传送门 公路修建问题 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Associa ...

  3. HNOI2006-公路修建问题(二分答案+并查集)

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

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

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

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

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

  6. bzoj 1196: [HNOI2006]公路修建问题(二分+贪心)

    传送门 解题思路 看到最大,肯定要先想二分答案.二分之后首先从小到大枚举\(k\)个小于\(lim\)的所有一级公路,然后用并查集连到一起,然后就在剩下的里面从小到大找n-1-k个二级公路,模仿最小生 ...

  7. 洛谷P1991无线通讯网[kruskal | 二分答案 并查集]

    题目描述 国防部计划用无线网络连接若干个边防哨所.2 种不同的通讯技术用来搭建无线网络: 每个边防哨所都要配备无线电收发器:有一些哨所还可以增配卫星电话. 任意两个配备了一条卫星电话线路的哨所(两边都 ...

  8. BZOJ 1196 二分答案+并查集

    http://www.lydsy.com/JudgeOnline/problem.php?id=1196 题目大意:n个城市,m-1条路,每条路有一级公路和二级公路之分,你要造n-1条路,一级公路至少 ...

  9. HDU-3081-Marriage Match 2(最大流, 二分答案, 并查集)

    链接: https://vjudge.net/problem/HDU-3081 题意: Presumably, you all have known the question of stable ma ...

随机推荐

  1. JS实现全排列

    https://www.jb51.net/article/39291.htm JavaScript全排列的六种算法 具体实现 算法一:交换(递归) 复制代码代码如下: <html xmlns=& ...

  2. python-判断alter是否存在

    from selenium import webdriver import time from selenium.webdriver.support.ui import WebDriverWait f ...

  3. 【线性基】bzoj2322: [BeiJing2011]梦想封印

    线性基的思维题+图常见套路 Description 渐渐地,Magic Land上的人们对那座岛屿上的各种现象有了深入的了解. 为了分析一种奇特的称为梦想封印(Fantasy Seal)的特技,需要引 ...

  4. NOIp2017囤题计划

    马上就要NOIp2017了,应该囤些题目吧…… 好的这只是一个开始 upd - 11.5 1.p1576 最小花费 无向图,dijisktra 2.p1339 [USACO09OCT]热浪Heat W ...

  5. Spring Boot 应用 快速发布到linux服务器的脚本代码示例

    前提说明:spring boot 应用打包成jar包之后要部署到Linux服务器上面运行,我用的nohup java -jar 命令,但是代码更新之后重新部署的时候覆盖原来的项目,又要手动运行ps - ...

  6. pycharm安装 suds模块报错:AttributeError: module 'pip' has no attribute 'main'

    需求:安装suds模块 遇到的问题: 一.报错信息:[file][Default Settint]---Project Interpreter 点击 搜索suds安装模块报错 解决:依据上图提示找到C ...

  7. python入门:UTF-8转换成GBK编码

    #!/usr/bin/env python # -*- coding:utf-8 -*- #UTF-8转换成GBK编码 #temp(临时雇员,译音:泰坡) #decode(编码,译音:迪口德) #en ...

  8. 如何在 CentOS 7 上安装 Python 3

    当前最新的 CentOS 7.5 默认安装的是 Python 2.7.5,并且默认的官方 yum 源中不提供 Python 3 的安装包.这里主要介绍两种在 CentOS 7 中安装 Python 3 ...

  9. web开发框架tornado

    在server.py文件中 import tornado.web import tornado.ioloop import tornado.httpserver import config from ...

  10. cpu位图

    SMP处理器中要用到cpu位图,用来维护系统内CPU的状态信息,具有代表性的有: cpu_possible_map.cpu_online_map.cpu_present_map. static DEC ...