P2323-[HNOI2006]公路修建问题【并查集】

正题

评测记录:https://www.luogu.org/recordnew/lists?uid=52918&pid=P2323


题目大意

有n个点,m条边,对于每条边修二级公路和一级公路修建价格不同(一级比二级贵)。要求留下n-1条边使其成为一棵树且至少有k条一级公路,要求最贵的公路价格最小。


解题思路

可以先将一级价格从小到大排序,然后修建k条有用且最小价格的边。然后剩下的都修二级公路就好了。


code

#include<cstdio>
#include<algorithm>
#define N 10010
using namespace std;
struct node{int x,y,w1,w2,num;
}a[2*N];
struct ans_node{int t,ans;
}ansr[2*N];
int n,k,m,f[2*N];
bool use[2*N];
int find(int x)//并查集
{return f[x]==x?x:(f[x]=find(f[x]));}
void unionn(int x,int y)//连接
{int fa=find(x),fb=find(y);if(fa<fb) f[fa]=fb;else f[fb]=fa;
}
bool cmp(node x,node y)
{return x.w1<y.w1;}
bool cmp1(node x,node y)
{return x.w2<y.w2;}
bool cmp2(ans_node x,ans_node y)
{return x.t<y.t;}
int main()
{scanf("%d%d%d",&n,&k,&m);m--;for(int i=1;i<=m;i++)scanf("%d%d%d%d",&a[i].x,&a[i].y,&a[i].w1,&a[i].w2),a[i].num=i;for(int i=1;i<=n;i++)f[i]=i;sort(a+1,a+1+m,cmp);int lb=0,ans=0;for(int i=1;i<=m;i++)//修建一级公路{if(find(a[i].x)!=find(a[i].y)){ans=max(ans,a[i].w1);unionn(a[i].x,a[i].y);ansr[++lb].ans=1;use[a[i].num]=true;ansr[lb].t=a[i].num;}if(lb==k) break;}sort(a+1,a+1+m,cmp1);for(int i=1;i<=m;i++)//修建二级公路{if(!use[a[i].num]&&find(a[i].x)!=find(a[i].y)){ans=max(ans,a[i].w2);unionn(a[i].x,a[i].y);use[a[i].num]=true;ansr[++lb].ans=2;ansr[lb].t=a[i].num;}if(lb==n-1) break;}sort(ansr+1,ansr+n,cmp2);printf("%d\n",ans);for(int i=1;i<n;i++)//输出方案printf("%d %d\n",ansr[i].t,ansr[i].ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Microsoft加入量子计算的竞争

Microsoft在Ignite大会上宣布了自己的量子计算新平台的预览版&#xff0c;并公开了借助近期粒子物理学方面的进展推出拓扑量子计算机的计划。 Microsoft的量子计算平台预览版将包括一个量子计算模拟器&#xff0c;以及一种集成在Visual Studio中的量子计算编程新语言。据Micros…

Window系统多硬盘设置新引导盘

一、系统启动过程 电脑通电后&#xff0c;首先是启动BIOS程序&#xff0c;BIOS自检完毕后&#xff0c;找到硬盘上的主引导记录MBR&#xff0c;MBR读取DPT&#xff08;分区表&#xff09;&#xff0c;从中找出活动的主分区&#xff0c;然后读取活动主分区的PBR&#xff08;分区引…

【Java】jdk和eclipse下载安装

&#xff08;以前忘了写这方面的安装&#xff09; 附一段测试java环境的代码 public class hello {public static void main(String[] args) {System.out.println("Hello World dsadasdaSasdasd");} }jdk安装&#xff1a; 这里我采用不同方式 直接360软件管家搜索jd…

C++描述杭电OJ 2010.水仙花数 ||

C描述杭电OJ 2010.水仙花数 || Problem Description 春天是鲜花的季节&#xff0c;水仙花就是其中最迷人的代表&#xff0c;数学上有个水仙花数&#xff0c;他是这样定义的&#xff1a; “水仙花数”是指一个三位数&#xff0c;它的各位数字的立方和等于其本身&#xff0c;比如…

使用BigQuery分析GitHub上的C#代码

一年多以前&#xff0c;Google 在GitHub中提供了BigQuery用于查询的GitHub上的开源代码&#xff08;open source code on GitHub available for querying&#xff09;&#xff0c;如果这还不够&#xff0c;您可以免费每月运行1TB的查询&#xff01; 所以在这篇文章中&#xff0…

NOIP2018普及组复赛解析

T1:标题统计 题目大意 输入一个字符串&#xff0c;求字符串除了空格的字符个数 解题思路 这种考你会不会编程的题不会&#xff1f; code #include<cstdio> #include<string> #include<iostream> using namespace std; int ans; string c; int main() {get…

Shell变量的初始值赋值

转载自 Shell变量的初始值赋值 通常在shell中&#xff0c;在变量值为空的时候我们要为变量设置一个默认值&#xff0c;避免在脚本运行的过程中报错&#xff0c;这就是变量的初始值赋值。 通常比较简洁的有以下两种&#xff0c;都能对一个变量赋予一个初始值&#xff0c; ${va…

【博客】博客转移

最近一直在搞博客&#xff0c;随着博客基本转移到wordpress&#xff0c;总算是告一段落。 我通过各种博客搬家的方式都没能把博客转移到wordpress上&#xff0c;后来实在没办法&#xff0c;强行Gutenberg编辑器&#xff0c;一个一个复制粘贴到自己博客上面&#xff0c;总算是实…

AspectCore中的IoC容器和依赖注入

IOC模式和依赖注入是近年来非常流行的一种模式&#xff0c;相信大家都不陌生了&#xff0c;在Asp.Net Core中提供了依赖注入作为内置的基础设施&#xff0c;如果仍不熟悉依赖注入的读者&#xff0c;可以看看由我们翻译的Asp.Net Core中文文档中依赖注入的相关章节: ASP.NET Cor…

[编程入门]阶乘求和:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字(n不超过20)。

【题目描述】求Sn1!2!3!4!5!…n!之值&#xff0c;其中n是一个数字(n不超过20)。#include<iostream> using namespace std;void fun(int n) {long long sn0,s1;for(int i1;i<n;i){for(int j1;j<i;j){s*j;}sns;s1;}cout<<sn<<endl; }int main() {int n;c…

bzoj1791,P4381-[IOI2008]Island【基环树,树形dp,单调队列dp,树的直径】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP4381 题目大意 有n个岛&#xff0c;n条无向边(保证每个岛都有边连到)。走过的路和岛不可以重走&#xff0c;可以坐船。 坐船要求之前没有任何使用过的船加上道路可以到达那个点才可以坐船。 求最长可…

【总结】找到自适合的学习方法

通过高中与大学的比较 我发现自己大学学的东西要比高中多很多&#xff0c;也要更加的充实。 说白了&#xff0c;其实我认为就是自己擅长与不擅长的学习方式罢了。 1、我更喜欢那种自由轻松一点的学习环境&#xff0c;高中把我压得太紧了&#xff08;老师喜欢提问&#xff09…

HttpClient的性能隐患

最近在进行开发过程中&#xff0c;基于都是接口开发&#xff0c;A站接口访问B接口接口来请求数据&#xff0c;而在这个过程中我们使用的是HttpClient这个框架&#xff0c;当然也是微软自己的框架&#xff0c;性能当前没有问题&#xff0c;但如果你直接使用官方的写法&#xff0…

P5022-旅行【基环树,dfs】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP5022 题目大意 一棵树(可能是基环树)&#xff0c;从1出发&#xff0c;每到达一个新的点就记录下编号。求一种走法使得记录下来的编号字典序最小。 解题思路 我们先不考虑基环树。我们可以发现每次走…

【填坑】博客搬家造成的博客重复问题

原本我的博客数量是差不多八十几篇&#xff0c;昨天晚上一看&#xff0c;怎么变成一百三十多篇了。 惊讶之余有点不可思议&#xff0c;查了才发现原来有几十篇是重复的&#xff0c;后来删掉了一些&#xff0c;但还是有很多 有些也不是重复的&#xff0c;我从知乎发的东西也被搬…

[编程入门]猴子吃桃的问题

猴子吃桃问题。猴子第一天摘下若干个桃子&#xff0c;当即吃了一半&#xff0c;还不过瘾&#xff0c;又多吃了一个。 第二天早上又将剩下的桃子吃掉一半&#xff0c;又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时&#xff0c;见只剩下一个桃子了…

Javafx的WebEgine执行window对象设置属性后为undefined

一、场景复现 window10 jdk1.8u221 package main;import javafx.application.Application; import javafx.beans.value.ObservableValue; import javafx.concurrent.Worker; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.Sta…

P4168-[Violet]蒲公英【分块】

正题 评测记录:https://www.luogu.org/recordnew/lists?uid52918&pidP4168 题目大意 询问区间众数 解题思路 将数字离散化&#xff0c;然后分块。对于数组vi,j,kv_{i,j,k}vi,j,k​&#xff0c;表示i∼ji\sim ji∼j个块&#xff0c;kkk的个数。对于询问(l,r)(l,r)(l,r)&…

使用acs-engine在Azure中国区部署kubernetes集群详解

1. acs-engine简介 ACS是微软在2015年12月推出的一项基于容器的云端PaaS服务。说简单点&#xff0c;acs-engine就是一个ARM模板生成器&#xff0c;用户只需要配置几个简单的参数来描述容器集群的规格&#xff0c;然后acs-engine将这个容器集群描述文件转化成一组ARM&#xff08…

C++描述杭电OJ 2011.多项式求和 ||

C描述杭电OJ 2011.多项式求和 || Problem Description 多项式的描述如下&#xff1a; 1 - 1/2 1/3 - 1/4 1/5 - 1/6 … 现在请你求出该多项式的前n项的和。 Input 输入数据由2行组成&#xff0c;首先是一个正整数m&#xff08;m<100&#xff09;&#xff0c;表示测试实…