题解【洛谷P2323】 [HNOI2006]公路修建问题
题解
跑两遍\(Kruskal\),第一次找出\(k\)条一级公路,第二次找出\(n - k - 1\)条二级公路,直接计算\(MST\)的权值之和即可。
代码
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cctype>
#define gI gi
#define itn int
#define File(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout)
using namespace std;
inline int gi()
{
    int f = 1, x = 0; char c = getchar();
    while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}
    while (c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();}
    return f * x;
}
int n, m, fa[20003], k, vis[20003];
struct OIer
{
	int a, b, c1, c2, id;
} d[20003];
struct STO_Tham
{
	int Id, Tham;
} ans[20003];
int getf(int u)
{
	if (fa[u] == u) return u;
	return fa[u] = getf(fa[u]);
}
int maxx = 900000000, maxy, tot;
inline bool cmp(OIer x, OIer y) {return x.c1 < y.c1;}
inline bool cmp1(OIer x, OIer y) {return x.c2 < y.c2;}
inline bool OrzTham(STO_Tham x, STO_Tham y) {return x.Id < y.Id;}
int main()
{
	//File("P2323");
	n = gi(), k = gi(), m = gi(); --m;
	for (int i = 1; i <= m; i+=1)
	{
		d[i].a = gi(), d[i].b = gi(), d[i].c1 = gi(), d[i].c2 = gi(), d[i].id = i;
	}
	for (int i = 1; i <= n; i+=1) fa[i] = i;
	sort(d + 1, d + 1 + m, cmp);
	for (int i = 1; i <= m; i+=1)
	{
		int u = getf(d[i].a), v = getf(d[i].b);
		if (u != v)
		{
			fa[u] = v;
			ans[++tot].Id = d[i].id, ans[tot].Tham = 1;
			maxy = max(maxy, d[i].c1);
			if (tot == k) break;
		}
	}
	sort(d + 1, d + 1 + m, cmp1);
	for (int i = 1; i <= m; i+=1)
	{
		int u = getf(d[i].a), v = getf(d[i].b);
		if (u != v)
		{
			fa[u] = v;
			ans[++tot].Id = d[i].id, ans[tot].Tham = 2;
			maxy = max(maxy, d[i].c2);
			if (tot == n - 1) break;
		}
	}
	sort(ans + 1, ans + 1 + tot, OrzTham);
	printf("%d\n", maxy);
	for (int i = 1; i < n; i+=1) printf("%d %d\n", ans[i].Id, ans[i].Tham);
	return 0;
}
题解【洛谷P2323】 [HNOI2006]公路修建问题的更多相关文章
- 洛谷 P2323 [HNOI2006]公路修建问题 解题报告
		P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ... 
- 洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]
		题目传送门 公路修建问题 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Associa ... 
- 洛谷 P2323 [HNOI2006]公路修建问题
		题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 3 4 4 ... 
- 1196/P2323: [HNOI2006]公路修建问题
		1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2191 Solved: 1258 Descriptio ... 
- 【洛谷P1265】公路修建
		公路修建 题目链接 分析题意,可以发现,在(1)的条件下,(2)的情况是不会发生的, 于是直接求MST(Min Set Tree) 然而稠密图克鲁斯卡尔会TLE,建图还会爆空间, 所以用prime,用 ... 
- P2323 [HNOI2006]公路修建问题
		题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 输出样例# ... 
- 【MST】P2323 [HNOI2006]公路修建问题
		Description 给定 \(n\) 个点 \(m - 1\) 条无向边,每条边有两种边权,贵一点的和便宜一点的.要求至少选择 \(k\) 条贵边使得图联通且花费最大的边权值最小. Input 第 ... 
- BZOJ 1196: [HNOI2006]公路修建问题 Kruskal/二分
		1196: [HNOI2006]公路修建问题 Time Limit: 1 Sec Memory Limit: 162 MB 题目连接 http://www.lydsy.com/JudgeOnline ... 
- 【最小生成树】BZOJ 1196: [HNOI2006]公路修建问题
		1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1435 Solved: 810[Submit][Sta ... 
- bzoj 1196: [HNOI2006]公路修建问题  二分+并查集
		题目链接 1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1576 Solved: 909[Submit ... 
随机推荐
- Local changes were not restore
			问题是这样的: 更新代码的时候出现这个弹框,不能更新最新代码 解决如下: 直接点击Clear [注意:这个操作是放弃本地所有的修改,如果要找回代码千万不要点击] 再点击Apply Stash 就可以 ... 
- 基于STL的字典生成模块-模拟搜索引擎算法的尝试
			该课题来源于UVA中Searching the Web的题目:https://vjudge.net/problem/UVA-1597 按照题目的说法,我对按照特定格式输入的文章中的词语合成字典,以满足 ... 
- 安装Ansible到CentOS(YUM)
			运行环境 系统版本:CentOS Linux release 7.3.1611 (Core) 软件版本:ansible 硬件要求:无 安装过程 1.安装YUM-EPEL源 HTTP-Tools软件包由 ... 
- PTA 简单计算器(C语言)
			模拟简单运算器的工作.假设计算器只能进行加减乘除运算,运算数和结果都是整数,四种运算符的优先级相同,按从左到右的顺序计算. 输入格式:输入在一行中给出一个四则运算算式,没有空格,且至少有一个操作数.遇 ... 
- springboot~gradle4.7之后的lombok引用方法
			在gradle4.7以后对于加入依赖lombok方式发生变化,gradle4.7版本以前,可以直接如下引用: compile("org.projectlombok:lombok:1.18.2 ... 
- mysql远程连接失败的两种解决方法
			---恢复内容开始--- (这是转载别人的,因为我觉得很有用,每次都是参考这个的第二种方法解决的,不管你听不听得到,先说声谢谢!也记下来方便大家看看) mysql解决远程不能访问的二种方法,需要的朋友 ... 
- vue animate.css训练动画案例 列表循环
			制作目标动画:向上入场添加数据,点击数据右滑动离场 简单页面效果: 实现代码如下: <!DOCTYPE html> <html> <head> <meta c ... 
- Structure preserving unsupervised feature selection
			Abstract • 使用自表示模型提取特征间的关系,结构保留约束来保持数据的局部流形结构: 1 Introduction • Contributions: (1)提出基于自表示模型的特征选择: ( ... 
- 转载:arm neon intrinsic
			转自:https://blog.csdn.net/hemmingway/article/details/44828303/ https://blog.csdn.net/chshplp_liaoping ... 
- 使用VS2017创建EF框架实例
			本文例子中使用环境:vs2017,sql server 2008 一,创建EF项目 1,解决方案添加.Net Framework类库项目,在新建的项目下新建项:data->ADO.NET实体数据 ... 
