1196: [HNOI2006]公路修建问题

Time Limit: 10 Sec  Memory Limit: 162 MB
Submit: 2657  Solved: 1511
[Submit][Status][Discuss]

Description

OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多。然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕。所以,OIER Association组织成立了,旨在建立OI island的交通系统。 OI island有n个旅游景点,不妨将它们从1到n标号。现在,OIER Association需要修公路将这些景点连接起来。一条公路连接两个景点。公路有,不妨称它们为一级公路和二级公路。一级公路上的车速快,但是修路的花费要大一些。 OIER Association打算修n-1条公路将这些景点连接起来(使得任意两个景点之间都会有一条路径)。为了保证公路系统的效率, OIER Association希望在这n-1条公路之中,至少有k条(0≤k≤n-1)一级公路。OIER Association也不希望为一条公路花费的钱。所以,他们希望在满足上述条件的情况下,花费最多的一条公路的花费尽可能的少。而你的任务就是,在给定一些可能修建的公路的情况下,选择n-1条公路,满足上面的条件。

Input

第一行有三个数n(1≤n≤10000),k(0≤k≤n-1),m(n-1≤m≤20000),这些数之间用空格分开。 N和k如前所述,m表示有m对景点之间可以修公路。以下的m-1行,每一行有4个正整数a,b,c1,c2 (1≤a,b≤n,a≠b,1≤c2≤c1≤30000)表示在景点a与b 之间可以修公路,如果修一级公路,则需要c1的花费,如果修二级公路,则需要c2的花费。

Output

一个数据,表示花费最大的公路的花费。

Sample Input

10 4 20
3 9 6 3
1 3 4 1
5 3 10 2
8 9 8 7
6 8 8 3
7 1 3 2
4 9 9 5
10 8 9 1
2 6 9 1
6 7 9 8
2 6 2 1
3 8 9 5
3 2 9 6
1 6 10 3
5 6 3 1
2 7 6 1
7 8 6 2
10 9 2 1
7 1 10 2

Sample Output

5

先按一级费用排序,用kruskal选出最便宜的k条公路

再按二级费用排序,用kruskal求出最小生成树

中间最高的费用就是答案

#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct Road
{int x, y, k1, k2;bool operator < (const Road &b) const{if(k1<b.k1)return 1;return 0;}
}Road;
Road s[20005];
int fa[10005];
bool comp(Road a, Road b)
{if(a.k2<b.k2)return 1;return 0;
}
int Find(int x)
{if(fa[x]==0)return x;return fa[x] = Find(fa[x]);
}
int main(void)
{int n, i, k, m, t1, t2, ans;scanf("%d%d%d", &n, &k, &m);m -= 1;for(i=1;i<=m;i++)scanf("%d%d%d%d", &s[i].x, &s[i].y, &s[i].k1, &s[i].k2);sort(s+1, s+m+1);ans = 0;for(i=1;i<=m;i++){t1 = Find(s[i].x);t2 = Find(s[i].y);if(t1!=t2){ans = max(ans, s[i].k1);fa[t1] = t2;k--;}if(k==0)break;}sort(s+1, s+m+1, comp);for(i=1;i<=m;i++){t1 = Find(s[i].x);t2 = Find(s[i].y);if(t1!=t2){ans = max(ans, s[i].k2);fa[t1] = t2;}}printf("%d\n", ans);return 0;
}

bzoj 1196: [HNOI2006]公路修建问题(贪心+最小生成树)相关推荐

  1. 1196: [HNOI2006]公路修建问题 - BZOJ

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

  2. P1265 公路修建(Prim最小生成树)

    原题链接:公路修建 - 洛谷   思路:其实就是最小生生成树.想想看,如果有2的情况,即三个点ABC,离A最近的点为B,离B最近的点为C,离C最近的点为A.那么把三条边设为a,b,c,即要满足a &l ...

  3. 【BZOJ 1196】[HNOI2006]公路修建问题

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 二分最后选的边中的最大值是多少. mid 则所有边权小于等于mid的边都可以用了. 那么我们要怎么选择呢? ->优先选择一级的 ...

  4. 公路修建问题(二分+最小生成树)

    Time Limit: 10 Sec  Memory Limit: 162 MB Submit: 2061  Solved: 1184 Description OI island是一个非常漂亮的岛屿, ...

  5. BZOJ1196: [HNOI2006]公路修建问题

    [传送门:BZOJ1196] 简要题意: 给出n个点,m-1条边,还有一个约束条件k,每条边可以是一级也可以是二级,一级或二级都需要费用,而一级的费用更高,选出n-1条边将n个点连起来,并且n-1条边 ...

  6. bzoj1196 [HNOI2006]公路修建问题

    题目链接 二分答案+kruskal最小生成树判断 二分费用,用满足费用要求的边来生成树,判断能否生成树 1 #include<iostream> 2 #include<cstdio& ...

  7. [HNOI2006]公路修建问题 ——二分答案+krukal(蒟弱个人总结)

    题目链接 文章目录 题意: 题解: AC代码 题意: 题目要求我们在n个景点之间建立n-1条公路,在花费尽量少的情况下至少有k条一级公路,求花费最多的一条公路的最小花费 题解: 二分答案+kruska ...

  8. 【BZOJ1196】公路修建问题,二分+最小生成树

    [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 1534 Solved: 879 Description OI isl ...

  9. 洛谷 P1265 公路修建 题解

    1 题面 公路修建 2 分析 这题特别的地方就是边多,5000×50005000\times 50005000×5000的边用kruscal空间不对. 主要空间瓶颈就是边的权是存不下来的,然而krus ...

最新文章

  1. 【转载】target='_blank' 安全漏洞示例
  2. c语言中的素数定理,素数定理
  3. ssl1613-最短路径问题【图论,最短路径(还不明显?)】
  4. C++ 一个字符串只包含K和D。K表示杀人,D表示死亡。计算连续杀敌次数,阵亡则归零。
  5. 移动数字广告与互联网反欺诈蓝皮报告
  6. oracle分区表学习及应用
  7. [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件
  8. phpmyadmin误删表后如何恢复
  9. 华为轮值董事长郭平新年致辞:不经艰难困苦,何来玉汝于成
  10. 塞班3的java键盘_【图片】Symbian3系统简介【塞班3吧】_百度贴吧
  11. python selenium模拟浏览器操作实战(武汉大学原教务系统)
  12. 【Docker】No defult Boot2Docer ISO异常
  13. 草根互联网经理掀起的中国性解放运动
  14. mysql 横向查询
  15. HDU4417 主席树入门2
  16. 别了,亲爱的读者朋友们!!让我们别处再相逢!
  17. 无人驾驶汽车系统入门(二十三)——迁移学习和端到端无人驾驶
  18. Boost库-功能介绍-Geometry-图形开发库-计算几何-常用功能封装-GraphicalDebugging(二)
  19. python编程软件排行榜_python编程软件
  20. ASM添加磁盘-ASMLIB

热门文章

  1. python画曲线图-利用python绘制数据曲线图的实现
  2. 语音识别电路设计图集锦 - 嵌入式类电子电路图 - 电子发烧友网
  3. 未来语音识别技术的发展趋势会如何
  4. 素数表的获取 O(nloglogn)复杂
  5. 对instance进行二次封装
  6. 导入php项目_商业裂变,之项目技术实战(第九节:程序框架的安装)
  7. android内存测试方法,Android内存测试方法.doc
  8. 【王道操作系统笔记】操作系统的运行机制和体系结构
  9. html5圆形提交按钮样式,HTML5 SVG带圆形进度条动画的提交按钮特效
  10. linux输入字符串到文件,[Linux文件]将用户输入的字符串写入文件实例