【bzoj3624】【apio2008】免费道路
2016/06/25
诸老师讲的图论,听了这道题很想写一下,但是看来要留到期末考后了。
07/01
有的标记是说生成树,有的是并查集。。。然而我只是觉得这棵奇怪的生成树蛮精妙的。。。
题目比较难过的只是K的限制,要读清楚题意,像我一开始就没有注意第一要求是“免费道路尽量少”。。。
至于这个K,可大可小。。最好的做法便是先将所有的水泥路连上,找到“必须需要的鹅卵石路”。。。
然后按照K的限制一条条地加。。。代码写的有些臭长。。。因为一个月没写代码了。。。又把==写成了=
判断no solution的时候忘记压缩路径了。。。又要debug。。。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 200000
using namespace std;
int bian[N],f[N],uu[N],vv[N],need[N];
int n,m,k,all,al;
int find(int x)
{
if(f[x]!=x)f[x]=find(f[x]);return(f[x]);
}
int main()
{
scanf("%d%d%d",&n,&m,&k);
;i<=n;i++)f[i]=i;int u,v,w;
memset(need,,sizeof(need));
;i<=m;i++)
{
scanf("%d%d%d",&u,&v,&w);bian[i]=w;uu[i]=u;vv[i]=v;
){
int x=find(u),y=find(v);
if(x!=y)f[x]=y;
}else all++;
}
;i<=m;i++)
)
{
int x=find(uu[i]),y=find(vv[i]);
,f[x]=y,al++;
}
if(al>k||all<k){
printf(;
}
;i<=n;i++)f[i]=i;
;i<=m;i++)
{
)
{
int x=find(uu[i]),y=find(vv[i]);if(x!=y)f[x]=y;
}
}
;i<=m;i++)
&&bian[i]==)
{
,al++;
}
if(al<k){
printf(;
}
;i<=m;i++)
)
{
;
}
);
;i<=n;i++)if(x!=find(i)){
printf(;}
;i<=m;i++)
)printf("%d %d %d\n",uu[i],vv[i],bian[i]);
}
【bzoj3624】【apio2008】免费道路的更多相关文章
- [BZOJ3624][Apio2008]免费道路
[BZOJ3624][Apio2008]免费道路 试题描述 输入 输出 输入示例 输出示例 数据规模及约定 见“输入”. 题解 第一步,先尽量加入 c = 1 的边,若未形成一个连通块,则得到必须加入 ...
- BZOJ3624: [Apio2008]免费道路(最小生成树)
题意 题目链接 Sol 首先答案一定是一棵树 这棵树上有一些0边是必须要选的,我们先把他们找出来,如果数量$\geqslant k$显然无解 再考虑继续往里面加0的边,判断能否加到k条即可 具体做法是 ...
- bzoj 3624: [Apio2008]免费道路 生成树的构造
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 111 Solved: 4 ...
- 题解 Luogu P3623 [APIO2008]免费道路
[APIO2008]免费道路 题目描述 新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可 ...
- BZOJ 3624: [Apio2008]免费道路
3624: [Apio2008]免费道路 Time Limit: 2 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1201 Solved: ...
- [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 ...
- Kruskal算法及其类似原理的应用——【BZOJ 3654】tree&&【BZOJ 3624】[Apio2008]免费道路
首先让我们来介绍Krukal算法,他是一种用来求解最小生成树问题的算法,首先把边按边权排序,然后贪心得从最小开始往大里取,只要那个边的两端点暂时还没有在一个联通块里,我们就把他相连,只要这个图里存在最 ...
- [APIO2008]免费道路
[APIO2008]免费道路 BZOJ luogu 先把必须连的鹅卵石路连上,大于k条no solution 什么样的鹅卵石路(u,v)必须连?所有水泥路都连上仍然不能使u,v连通的必须连 补全到k条 ...
- [APIO2008]免费道路(生成树)
新亚(New Asia)王国有 N 个村庄,由 M 条道路连接.其中一些道路是鹅卵石路,而其它道路是水泥路.保持道路免费运行需要一大笔费用,并且看上去 王国不可能保持所有道路免费.为此亟待制定一个新的 ...
随机推荐
- moogodb3.x总结
搞了三天了,从阿里云服务器,到linux,再到mongodb数据库,只有一个感觉就是,头都要炸了,这篇是对mongodb做一个总结吧,也算有一个成果了 mongodb在linux下的安装 mongod ...
- Mysql 调用存储过程的两种方式
一,使用call语句: 如:创建 call 调用: 使用占位符,通过prepare,execute调用:
- spring中scope作用域(转)
今天研究了一下scope的作用域.默认是单例模式,即scope="singleton".另外scope还有prototype.request.session.global sess ...
- shared_ptr 和 unique_ptr
c++11标准废除乐auto_ptr, C++ 标准库智能指针 使用这些智能指针作为将指针封装为纯旧 C++ 对象 (POCO) 的首选项. unique_ptr 只允许基础指针的一个所有者. 除非你 ...
- ios 拨打电话
1,这种方法,拨打完电话回不到原来的应用,会停留在通讯录里,而且是直接拨打,不弹出提示NSMutableString * str=[[NSMutableString alloc] initWithFo ...
- EasyUi – 6.easyui常见问题
1.进度条 2.JQuery EasyUI弹出对话框解决Asp.net服务器控件无法执行后台代码的方法 3. 三张表的连接查询现在到datagrid里 4.日期组合框DateBox设置readonly ...
- Spring.Net的IOC入门
1.构造器注入 namespace Spring.Net { class Program { //构造器注入 static void Main(string[] args) { IApplicatio ...
- c++11的初始化
c++11 中类型初始更加方便 比如 vector<int> vec = {1,2,3}; vector<int> vec{1,2,3}; map<string, ...
- HTML5学习之跨文档传输消息(七)
新标准中提供了文档之间直接的消息传输API.而且不限制跨域消息传递! 发送消息使用的是Window对象的postMessage(data,targetURL)方法就可以了,但给哪个window对象发送 ...
- Windows 10 周年更新正式版下载 + win10 快捷键
Windows 10 周年更新正式版 360云资源总汇(施工中): https://yunpan.cn/c6Svi7Az52XBs (提取码:e5dd)今后提到周年更新版.1607版或RS1版,都是 ...