题目描述

输入输出格式

输入格式:

在实际评测时,将只会有m-1行公路

输出格式:

输入输出样例

输入样例#1:
复制

4 2 5
1 2 6 5
1 3 3 1
2 3 9 4
2 4 6 1
输出样例#1: 复制

6
1 1
2 1
4 1


简单的贪心,


#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std; int n, k, m; struct edge
{
int x, y;
int val;
int v1, v2;
int yuan;
}ed[];
int cnt;
int l = , r , mid; void add(int x, int y, int z, int zz, int zzz)
{
cnt++;
ed[cnt].x = x;
ed[cnt].y = y;
ed[cnt].val = min(z, zz);
ed[cnt].v1 = z;// er ji
ed[cnt].v2 = zz; // yi ji
ed[cnt].yuan = zzz;
} int fa[]; int Find(int x)
{
return x == fa[x] ? x : fa[x] = Find(fa[x]);
} bool use[][]; bool cmp1(edge a, edge b)
{
if (a.v2 == b.v2) return a.v1 < b.v1;
return a.v2 < b.v2;
} inline bool cmp2(edge a, edge b)
{
return a.val < b.val;
} int ans = ; int main()
{
cin >> n >> k >> m; for(register int i = ; i < m ; i ++)
{
int x, y, z, zz;
scanf("%d%d%d%d", &x, &y, &z, &zz);
add(x, y, zz, z, i);
r = max(r, max(z, zz));
} int ans = ; sort(ed + , ed + cnt + , cmp1); for (register int i = ; i <= n ; i ++) fa[i] = i; int num = ;
for (register int i = ; i <= cnt ; i ++)
{
if (num == k) break;
int x = ed[i].x, y = ed[i].y;
int fx = Find(x), fy = Find(y);
if (fx == fy) continue;
ans = max(ans, ed[i].v2);
fa[fx] = fy;
num++;
use[ed[i].yuan][] = ;
}
sort(ed + , ed + cnt + , cmp2);
for (int i = ; i <= cnt ; i ++)
{
if (num == n - ) break;
int x = ed[i].x, y = ed[i].y;
int fx = Find(x), fy = Find(y);
if (fx == fy) continue;
if (use[ed[i].yuan][]) continue;
ans = max(ans, ed[i].val);
fa[fx] = fy;
num++;
if (ed[i].val == ed[i].v2) use[ed[i].yuan][] = ;
if (ed[i].val == ed[i].v1) use[ed[i].yuan][] = ;
if (num == n - ) break;
}
cout << ans << endl;
for (int i = ; i <= cnt ; i ++)
{
if (use[i][]) printf("%d %d\n", i, );
else if (use[i][]) printf("%d %d\n", i, );
} return ;
}

[Luogu2323] [HNOI2006]公路修建问题的更多相关文章

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

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

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

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

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

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

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

    BZOJ_1196_[HNOI2006]公路修建问题_kruskal+二分答案 题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1196 分析: ...

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

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

  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. 洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]

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

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

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

随机推荐

  1. Linux 笔记 - 第十章 Shell 基础知识

    博客地址:http://www.moonxy.com 一.前言 Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口,它接收用户输入的命令并把它送入内核去执行.实际上 Shell 是一 ...

  2. Day 22 进程管理2之系统的平均负载

    1.管理进程状态 当程序运行为进程后,如果希望停止进程,怎么办呢? 那么此时我们可以使用linux的kill命令对进程发送关闭信号.当然除了kill.还有killall,pkill 1.使用kill ...

  3. 采用WPF技术,开发OFD电子文档阅读器

    前言 OFD是国家标准版式文档格式,于2016年生效.OFD文档国家标准参见<电子文件存储与交换格式版式文档>.既然是国家标准,OFD随后肯定会首先在政务系统使用,并逐步推向社会各个方面. ...

  4. Hadoop 之 Hadoop2.0

    1.Hadoop2.0与1.0 答:Hadoop2.0之后的版本移除了原有的JobTracker和TaskTracker,改由Yarn平台的ResourceManager负责集群中所有资源的管理和分配 ...

  5. [Leetcode] 第290题 单词模式

    一.题目描述 给定一种 pattern(模式) 和一个字符串 str ,判断 str 是否遵循相同的模式. 这里的遵循指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词 ...

  6. 基于Docker搭建大数据集群(六)Hive搭建

    基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spar ...

  7. 暑期——第五周总结(Web连接hbase数据库)

    所花时间:7天 代码行:1000(python)+250(java) 博客量:1篇 了解到知识点 : 在尝试使用hbase当作数据库时,林子雨老师教程中有完整代码关于使用hbase,我就像当然认为只需 ...

  8. C++ new和malloc的区别

    1.new关键字是C++中的一部分,malloc是由C库提供的函数: 2.new是以具体类型为单位进行内存分配,malloc只能以字节为单位进行内存分配: 3.new在申请单个类型变量时可进行初始化, ...

  9. 从 Int 到 Integer 对象,细细品来还是有不少东西

    int 是 Java 八大原始类型之一,是 Java 语言中为数不多不是对象的东西,Integer 是 int 的包装类,里面使用了一个 int 类型的变量来存储数据,提供了一些整数之间的常用操作,常 ...

  10. 使用 .gitignore 忽略 Git 仓库中的文件

    .gitignore 在Git中,很多时候你只想将代码提交到仓库,而不是将当前文件目录下的文件全部提交到Git仓库中,例如在MacOS系统下面的.DS_Store文件,或者是Xocde的操作记录,又或 ...