Bzoj 3624: [Apio2008]免费道路 (贪心+生成树)



Sample Input
1 3 0
4 5 1
3 2 0
5 3 1
4 3 0
1 2 1
4 2 1
Sample Output
4 3 0
5 3 1
1 2 1
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <queue>
#include <algorithm>
#include <cmath>
#include <map>
#define N 20005
#define M 100005
using namespace std;
int n,m,t,fa[N];
struct ro
{
int to,from,l;
bool bj;
}road[M];
bool px1(ro a,ro b)
{
return a.l>b.l;
}
bool px2(ro a,ro b)
{
return a.l<b.l;
}
int find(int x)
{
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
void hb(int x,int y)
{
int a=find(x),b=find(y);
fa[a]=b;
}
int ans[N];
int main()
{
scanf("%d%d%d",&n,&m,&t);
int sum=;
for(int i=;i<=n;i++)fa[i]=i;
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&road[i].from,&road[i].to,&road[i].l);
if(!road[i].l)sum++;
}
sort(road+,road++m,px1);
int js1=,js2=;
for(int i=;i<=m;i++)
{
int x=road[i].from,y=road[i].to;
if(find(x)!=find(y))
{
js1++;
if(!road[i].l)
{
road[i].bj=;
js2++;
}
hb(x,y);
}
if(js1==n-)break;
}
if(js1!=n-||js2>t)
{
printf("no solution\n");
exit();
}
sort(road+,road++m,px2);
js1=,js2=;
for(int i=;i<=n;i++)fa[i]=i;
for(int i=;i<=sum;i++)
{
if(road[i].bj)
{
int x=road[i].from,y=road[i].to;
hb(x,y);
js2++;
js1++;
ans[js1]=i;
}
}
for(int i=;i<=m;i++)
{
int x=road[i].from,y=road[i].to;
if(find(x)!=find(y))
{
if(!road[i].l)
{
js2++;
}
js1++;
ans[js1]=i;
hb(x,y);
}
if(js2==t)i=sum,js2=-;
}
if(js2!=-)
{
printf("no solution\n");
exit();
}
for(int i=;i<=n-;i++)
{
printf("%d %d %d\n",road[ans[i]].from,road[ans[i]].to,road[ans[i]].l);
}
return ;
}
Bzoj 3624: [Apio2008]免费道路 (贪心+生成树)的更多相关文章
- bzoj 3624: [Apio2008]免费道路【生成树+贪心】
先把水泥路建生成树,然后加鹅卵石路,这里加的鹅卵石路是一定要用的(连接各个联通块),然后初始化并查集,先把必需的鹅卵石路加进去,然后随便加鹅卵石路直到k条,然后加水泥路即可. 注意判断无解 #incl ...
- bzoj 3624: [Apio2008]免费道路 生成树的构造
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 111 Solved: 4 ...
- BZOJ 3624: [Apio2008]免费道路
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1201 Solved: ...
- BZOJ 3624 [Apio2008]免费道路:并查集 + 生成树 + 贪心【恰有k条特殊路径】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3624 题意: 给你一个无向图,n个点,m条边. 有两种边,种类分别用0和1表示. 让你求一 ...
- BZOJ 3624: [Apio2008]免费道路 [生成树 并查集]
题意: 一张图0,1两种边,构造一个恰有k条0边的生成树 优先选择1边构造生成树,看看0边是否小于k 然后保留这些0边,补齐k条,再加1边一定能构成生成树 类似kruskal的证明 #include ...
- BZOJ.3624.[APIO2008]免费道路(Kruskal)
题目链接 我们发现有些白边是必须加的,有些是多余的. 那么我们先把所有黑边加进去,然后把必须要加的白边找出来. 然后Kruskal,把必须要加的白边先加进去,小于K的话再加能加的白边.然后加黑边. 要 ...
- 3624: [Apio2008]免费道路
Description Input Output Sample Input 5 7 2 1 3 0 4 5 1 3 2 0 5 3 1 4 3 0 1 2 1 4 2 1 Sample Output ...
- [Apio2008]免费道路[Kruscal]
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1292 Solved: ...
- P3623 [APIO2008]免费道路
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special Judge Submit: 2143 Solved: 88 ...
随机推荐
- PHP获得指定日期所在星期的第一天和最后一天
function getdays($day){ $lastday=date('Y-m-d',strtotime("$day Sunday")); $firstday=date('Y ...
- laravel在wamp中输入地址后总是无法访问
在wamp中的apache中conf的httpd.conf #LoadModule rewrite_module modules/mod_rewrite.so 改为 LoadModule rewrit ...
- Delphi XE5 Android Dialogs 对话框(模拟做了一套)
最近要在Android中使用对话框, 但发现无现成的, TOpenDialog等已经不支持移动设备,还好系统提供了一些文件目录函数可用,于是简单的模拟了一个,支持OpenDialog ,SaveDia ...
- PopupWindow设置动画效果
创建popupwindow的方法 Button menu; private void showPopupWindow() { //设置contentView float density = Densi ...
- WPF Aero Glass Window
原文:WPF Aero Glass Window 用法 Win7 DwmSetWindowAttribute function Win10 SetWindowCompositionAttribute ...
- AStyle 2.02版本 AStyle(全称Artistic Style)是一个C、C++、C#和Java源代码缩进、格式化和美化工具
http://download.csdn.net/detail/akof1314/3323725
- 对Qt for Android的评价(很全面,基本已经没有问题了),可以重用QT积累20年的RTL是好事,QML效率是HTML5的5倍
现在Qt不要光看跨平台了,Qt也有能力和原生应用进行较量的.可以直接去Qt官网查看他和那些厂商合作.关于和Java的比较,框架和Java进行比较似乎不且实际.如果是C++和Java比较,网上有很多文章 ...
- 2013年最流行的php框架盘点
2013年最流行的php框架盘点 PHP框架的发展背景 毫无疑问,Web框架技术在近几年已经得到了突飞猛进的发展和普及,在过去几年里,框架技术的普遍经历了比较大的完善过程,很大一部分可以归因于Ruby ...
- kafka笔记2
Kafka是使用java开发的程序,所以它可以运行在多种操作系统上,安装Kafka之前,需要先安装Java环境,再安装zookeeper broker常规配置 1.broker.id 每个broker ...
- java中Array和ArrayList区别
1)精辟阐述:可以将 ArrayList想象成一种“会自动扩增容量的Array”. 2)Array([]):最高效:但是其容量固定且无法动态改变: ArrayList: 容量可动态增长:但牺 ...