洛谷 P2323 [HNOI2006]公路修建问题
题目描述
输入输出格式
输入格式:
在实际评测时,将只会有m-1行公路
输出格式:
输入输出样例
- 4 2 5
- 1 2 6 5
- 1 3 3 1
- 2 3 9 4
- 2 4 6 1
- 3 4 4 2
- 4
- 2 1
- 3 2
- 5 1
- 4 1 5
- 1 2 6 5
- 1 3 3 1
- 2 3 9 4
- 2 4 6 1
- 3 4 4 3
- 3
- 2 1
- 4 2
- 5 2
坑到炸的一句话、。。
二分+kruskal
- #include <algorithm>
- #include <cstdio>
- #define N 20005
- using namespace std;
- struct Edge
- {
- int x,y,z,id;
- bool operator<(Edge a)const
- {
- return z<a.z;
- }
- }e1[N],e2[N];
- struct node
- {
- int a,b;
- bool operator<(node x)const
- {
- return a<x.a;
- }
- }ans[N];
- int n,k,m,siz,fa[N];
- int find_(int x) {return x==fa[x]?x:fa[x]=find_(fa[x]);}
- bool check(int x)
- {
- for(int i=;i<=n;++i) fa[i]=i;
- int num=;
- for(int i=;i<=m;++i)
- {
- if(e1[i].z>x) continue;
- int fx=find_(e1[i].x),fy=find_(e1[i].y);
- if(fx!=fy)
- {
- num++;
- fa[fy]=fx;
- }
- }
- if(num<k) return false;
- for(int i=;i<=m;++i)
- {
- if(e2[i].z>x) continue;
- int fx=find_(e2[i].x),fy=find_(e2[i].y);
- if(fx!=fy)
- {
- fa[fy]=fx;
- num++;
- }
- }
- if(num==n-) return true;
- return false;
- }
- void get(int x)
- {
- for(int i=;i<=n;++i) fa[i]=i;
- for(int i=;i<=m;++i)
- {
- if(e1[i].z>x) continue;
- int fx=find_(e1[i].x),fy=find_(e1[i].y);
- if(fx!=fy)
- {
- siz++;
- fa[fy]=fx;
- ans[siz].a=e1[i].id;
- ans[siz].b=;
- }
- }
- for(int i=;i<=m;++i)
- {
- if(e2[i].z>x) continue;
- int fx=find_(e2[i].x),fy=find_(e2[i].y);
- if(fx!=fy)
- {
- siz++;
- fa[fy]=fx;
- ans[siz].a=e2[i].id;
- ans[siz].b=;
- }
- }
- }
- int main(int argc,char *argv[])
- {
- scanf("%d%d%d",&n,&k,&m);
- int l=,r=,anss;
- for(int u,v,w1,w2,i=;i<=m;++i)
- {
- scanf("%d%d%d%d",&u,&v,&w1,&w2);
- e1[i]=(Edge){u,v,w1,i};
- e2[i]=(Edge){u,v,w2,i};
- r=max(r,w1);
- }
- sort(e1+,e1+m);
- sort(e2+,e2+m);
- for(int mid;l<=r;)
- {
- mid=(l+r)>>;
- if(check(mid))
- anss=mid,r=mid-;
- else l=mid+;
- }
- printf("%d\n",anss);
- get(anss);
- sort(ans+,ans++siz);
- for(int i=;i<=siz;++i) printf("%d %d\n",ans[i].a,ans[i].b);
- return ;
- }
洛谷 P2323 [HNOI2006]公路修建问题的更多相关文章
- 洛谷 P2323 [HNOI2006]公路修建问题 解题报告
P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...
- 洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]
题目传送门 公路修建问题 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Associa ...
- 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]公路修建问题
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 ...
- BZOJ 1196: [HNOI2006]公路修建问题( MST )
水题... 容易发现花费最大最小即是求 MST 将每条边拆成一级 , 二级两条 , 然后跑 MST . 跑 MST 时 , 要先加 k 条一级road , 保证满足题意 , 然后再跑普通的 MST . ...
随机推荐
- POJ-3616
Milking Time Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10434 Accepted: 4378 Des ...
- db2 command line notes
db2ilist - list instances db2 attach to <instance> user <username> using <password> ...
- 5、scala面向对象-类
一.类 1.定义类 ##定义并调用 scala> :paste // Entering paste mode (ctrl-D to finish) class HelloWord { priva ...
- iwork 文件格式分析
根据维基百科,到2015年苹果推出的iwork版本 第一章:iwork2008介绍 1.文档结构: 是一个资源合集:压缩格式的(内含文件夹和文件) 在windows下修改iwork的文件后缀为.rar ...
- Razor与HTML混合输出陷阱与技巧
3,Razor与HTML混合输出陷阱与技巧 属性名称误判 有时候我们必须让html内容与razor语句紧接在一起, eg: 您好,a先生 假设变量名称为ViewBag.Name, 您好, ...
- 字节码操作-Javaassist
下面就是一个具体的demo来介绍利用Javaassist库来创建类,不过要先在工程里面导入Javaassist的架包, package JavaAasist; import java.lang.ref ...
- 为什么要用babel-polyfill
1.为什么要用babel-polyfill Babel默认只转换新的JavaScript句法(syntax),而不转换新的API,比如 Iterator.Generator.Set.Maps.Prox ...
- Spark 中的 checkpoint
为了实现容错,需要做checkpoint.以Streaming为例,checkpoint中有两种数据: 1. Metadata checkpointing:用于恢复driver端出错的情况.其中包含: ...
- Node.js 内置模块crypto加密模块(3) HMAC
HMAC:哈希消息认证码 ( Hash-based Message Authentication Code ) HMAC是密钥相关的哈希算法 使用 HMAC 进行加密的Node实现的一种方法: &qu ...
- 剑指Offer的学习笔记(C#篇)-- 二进制中1的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 一 . 解题思路 新颖的解法,使得该题目运用到了二进制的位运算符.先了解一下位运算符! 此题便很好的发挥了位运算符& ...