题目描述

输入输出格式

输入格式:

在实际评测时,将只会有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 2
输出样例#1:

4
2 1
3 2
5 1
输入样例#2:

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

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]公路修建问题的更多相关文章

  1. 洛谷 P2323 [HNOI2006]公路修建问题 解题报告

    P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题 ...

  2. 洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]

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

  3. 1196/P2323: [HNOI2006]公路修建问题

    1196: [HNOI2006]公路修建问题 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2191  Solved: 1258 Descriptio ...

  4. 【洛谷P1265】公路修建

    公路修建 题目链接 分析题意,可以发现,在(1)的条件下,(2)的情况是不会发生的, 于是直接求MST(Min Set Tree) 然而稠密图克鲁斯卡尔会TLE,建图还会爆空间, 所以用prime,用 ...

  5. P2323 [HNOI2006]公路修建问题

    题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 输出样例# ...

  6. 【MST】P2323 [HNOI2006]公路修建问题

    Description 给定 \(n\) 个点 \(m - 1\) 条无向边,每条边有两种边权,贵一点的和便宜一点的.要求至少选择 \(k\) 条贵边使得图联通且花费最大的边权值最小. Input 第 ...

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

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

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

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

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

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

随机推荐

  1. [hiho1584]Bounce

    题意:找出图中经过一次的格子个数. 解题关键: 组合数学的思想:先找出总的经过格子的次数,然后减去2倍的经过2次的格子个数. 1.总的求法:将长延展,当延展到n倍时,能够恰好到达右边的两个端点,则总格 ...

  2. C# 移除string[] 数组中的指定元素

    本文转载自  http://www.cnblogs.com/jcdd-4041/p/3279531.html 第一步:先把string[] 转换成 ArrayList   第二步:移除指定元素 第三步 ...

  3. 如何升级一个JavaWeb应用

    准备db变更 准备整个war包或变更的文件 上传文件至云盘​(通常直接上传文件较慢,建议先传到云盘,然后下载) 从云盘下载 执行db变更 解压war到指定目录或替换变更的文件 修改设计IP地址的配置文 ...

  4. HTML5学习笔记(四)语义元素

    语义元素能够清楚的描述其意义给浏览器和开发者. 无语义 元素实例: <div> 和 <span> - 无需考虑内容. 语义元素实例: <form>, <tab ...

  5. java中的 break continue return作用详解

    break: 此语句导致程序终止包含它的循环,并进行程序的下一阶段(整个循环后面的语句),即,不是跳到下一个循环周期而是退出循环.如果break语句包含在嵌套循环里,它只跳出最里面的循环. 如下代码: ...

  6. SCUT - 12 - 西方国家 - 矩阵快速幂

    https://scut.online/p/12 可以用矩阵快速幂来做. #include<bits/stdc++.h> using namespace std; typedef long ...

  7. 实现简易版shell

    操作系统小组作业,实现一个简易shell,shell实现了下列命令 exit------退出终端命令 clr-------清屏命令 time-----时间命令 myshell----欢迎命令 quit ...

  8. jQuery EasyUI/TopJUI创建日期输入框

    jQuery EasyUI/TopJUI创建日期输入框 日期时间输入框组件 HTML required:必填字段,默认为false:prompt:显示在输入框的提示性文字:pattern:日期格式 Y ...

  9. oracle rownum(转)

    对于Oracle的rownum问题,很多资料都说不支持>,>=,=,between……and,只能用以上符号(<.& lt;=.!=),并非说用>,>=,=,be ...

  10. null is not an object (evaluating 'Picker._init')

    安装完react-native-picker后,init出现报错,其实是原生配置还没完全生效,重启项目就可以了