[APIO2008]免费道路

BZOJ

luogu

先把必须连的鹅卵石路连上,大于k条no solution

什么样的鹅卵石路(u,v)必须连?所有水泥路都连上仍然不能使u,v连通的必须连

补全到k条鹅卵石路,补不全no solution

最后用水泥路构出生成树,构不出no solution

#include<bits/stdc++.h>
using namespace std;
const int _=1e5+5;
int re(){
int x=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*w;
}
bool vis[_];
int n,m,k,cnt,fa[_],ans[_];
struct edge{int u,v,c;}e[_];
int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
void unite(int x,int y){
x=find(x);y=find(y);
if(x^y)fa[x]=y;
}
int main(){
n=re(),m=re(),k=re();
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=m;i++){
int u=re(),v=re(),c=re();
e[i]=(edge){u,v,c};
if(c)unite(u,v);
}
for(int i=1;i<=m;i++){
if(find(e[i].u)^find(e[i].v)){
unite(e[i].u,e[i].v);
ans[++cnt]=i;vis[i]=1;
}
}
if(cnt>k){puts("no solution");return 0;}
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=cnt;i++)
unite(e[ans[i]].u,e[ans[i]].v);
for(int i=1;i<=m;i++){
if(e[i].c||vis[i])continue;
if(find(e[i].u)^find(e[i].v)){
unite(e[i].u,e[i].v);
ans[++cnt]=i;
if(cnt==k)break;
}
}
if(cnt<k){puts("no solution");return 0;}
for(int i=1;i<=m;i++){
if(!e[i].c)continue;
if(find(e[i].u)^find(e[i].v)){
unite(e[i].u,e[i].v);
ans[++cnt]=i;
if(cnt==n-1)break;
}
}
if(cnt<n-1){puts("no solution");return 0;}
for(int i=1;i<n;i++)
printf("%d %d %d\n",e[ans[i]].u,e[ans[i]].v,e[ans[i]].c);
return 0;
}

[APIO2008]免费道路的更多相关文章

  1. [BZOJ3624][Apio2008]免费道路

    [BZOJ3624][Apio2008]免费道路 试题描述 输入 输出 输入示例 输出示例 数据规模及约定 见“输入”. 题解 第一步,先尽量加入 c = 1 的边,若未形成一个连通块,则得到必须加入 ...

  2. bzoj 3624: [Apio2008]免费道路 生成树的构造

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 111  Solved: 4 ...

  3. 题解 Luogu P3623 [APIO2008]免费道路

    [APIO2008]免费道路 题目描述 新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可 ...

  4. BZOJ 3624: [Apio2008]免费道路

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1201  Solved:  ...

  5. [Apio2008]免费道路[Kruscal]

    3624: [Apio2008]免费道路 Time Limit: 2 Sec  Memory Limit: 128 MBSec  Special JudgeSubmit: 1292  Solved:  ...

  6. P3623 [APIO2008]免费道路

    3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special Judge Submit: 2143 Solved: 88 ...

  7. Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路

    首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...

  8. [APIO2008]免费道路(生成树)

    新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可能保持所有道路免费.为此亟待制定一个新的 ...

  9. 【bzoj3624】Apio2008—免费道路

    http://www.lydsy.com/JudgeOnline/problem.php?id=3624 (题目链接) 题意 给出一张无向图,其中有0类边和1类边.问能否构成正好有K条0类边的生成树, ...

随机推荐

  1. [PWA] Disable Text Selection and Touch Callouts in a PWA on iOS

    Because an installed PWA is really just a web app running in a browser, there are some browser behav ...

  2. Weblogic OutOfMemory exception的误解 -- thread limitation

    不是全部的OutofMemory exception都是内存问题... 前几天有个客户的site报了下面错误: [ERROR][thread ] Could not start thread Time ...

  3. 持久化配置管理 diamond 使用简介

    本次为大家介绍diamond的概况和快速使用. 一.概况 diamond是淘宝内部使用的一个管理持久配置的系统,它的特点是简单.可靠.易用,目前淘宝内部绝大多数系统的配置,由diamond来进行统一管 ...

  4. 使用HttpClient测试SpringMVC的接口

    转载:http://blog.csdn.net/tmaskboy/article/details/52355591 最近在写SSM创建的Web项目,写到一个对外接口时需要做测试,接受json格式的数据 ...

  5. Angular 学习笔记——factory

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  6. JAVA Eclipse 启动 Eclipse 弹出“Failed to load the JNI shared library jvm_dll”怎么办

    原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因2:eclipse的版本与jre或者jdk版本不一致 ...

  7. Android EditText 输入password是否可见

    设置password不可见 etAfter.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); 设置password可见 etA ...

  8. Oracle创建表空间与用户

    /* 说明:若已经存在相应的用户和表空间,则需要先删除相应的用户和表空间 然后再全部重新建立 */ --删除用户 drop user XDAYWEIXIN cascade; --删除表空间 drop ...

  9. maven生成jar包

    改了部分cas源码,想重新生成jar包,只好试着脱离eclipse,学了一下maven打jar包的命令,记录如下: 1.首先下载maven (请注意自己的jdk版本,如果使用maven2建议使用jdk ...

  10. JDBC编程理论知识(1)

    1.SUN公司为统一对数据库的操作,定义了一套Java操作数据库的规范,称之为JDBC 2.JDBC全称为:Java Data Base Connectivity(java数据库连接),它主要由接口组 ...