题目描述

输入输出格式

输入格式:

在实际评测时,将只会有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. CentOS7上OpenResty安装

    1,OpenResty安装 通过repl源安装: sudo yum-config-manager --add-repo https://openresty.org/yum/cn/centos/Open ...

  2. ExpandableListView之BaseExpandableListAdapter

    之前使用的SimpleExpandableListAdapter有较大局限性,样式单一,修改难度大,这里不建议使用,而是利用BaseExpandableListAdapter,其实SimpleExpa ...

  3. [LeetCode]Jump GameII

    题目:Jump GameII 如果要求找最小的调数,考虑扩张的思路. 思路如下: 1.首先找起始位能到达的范围是否覆盖了最终位置,并记录下搜索中的最远能到达的位置值,即max{nums[i] + i} ...

  4. ReentrantLock API

    java可重入锁,简单几个小案例,测试特性. 1.尝试锁  tryLock package com.cn.cfang.ReentrantLock; import java.util.concurren ...

  5. H5当弹出弹窗遮罩时如何阻止滚动穿透(使用css方式)

    最近的一个H5活动中有一个是点击[分享]弹窗指引遮罩弹窗引导用户进行分享,但突然发现弹出弹窗的时候下层仍然可以进行滑动,这个问题是个H5经久不衰讨论的问题,重点是我这个页面在安卓系统上有明显的滑动闪烁 ...

  6. 2019-2020-1 20199303《Linux内核原理与分析》第三周作业

    操作系统是如何工作的 除了存储程序计算机和函数调用堆栈机制,还有一个非常基础的概念就是中断,这三个关键性的方法机制可以称作计算机的三个法宝:程序存储计算机.函数调用.中断 堆栈的作用:记录函数调用框架 ...

  7. 基于操作系统原理的Linux的内存管理

    一.实验目的 1.理解虚拟内存.磁盘缓存的概念. 2.掌握基本的内存管理知识. 3.掌握查看实时查看内存.内存回收的方法 二.实验内容 1. 监控内存使用情况 2. 检查和回收内容 三.实验平台 1. ...

  8. html标签和css基础语法与浏览器兼容性等相关基础学习

    <!-- table的使用 --> <h3>前端日常</h3> <form action="https://www.baidu.com"& ...

  9. Spring boot 梳理 -@SpringBootApplication、@EnableAutoConfiguration与(@EnableWebMVC、WebMvcConfigurationSupport,WebMvcConfigurer和WebMvcConfigurationAdapter)

    @EnableWebMvc=继承DelegatingWebMvcConfiguration=继承WebMvcConfigurationSupport 直接看源码,@EnableWebMvc实际上引入一 ...

  10. rpm -qa|grep nfs >/dev/null 2>&1作用

    在使用一些shell命令是,经常会用到rpm -qa|grep nfs >/dev/null 2>&1之类的命令,该命令干嘛用的呢? 其实这个命令就是将rpm -qa|grep n ...