【2018百度之星资格赛】F 三原色图 - 最小生成树
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6349
Knowledge Point: 最小生成树算法Prim&Kruskal
Summarize:
本题采用构造两颗带权最小生成树的方法求解;
求解最小生成树的方法有prim和kruskal两种方法,但是网上题解皆采用的后者;
我用prim写了之后发现AC不了,主要是prim采用的邻接矩阵的方法存储边对这道题不适用,题目没有说过没有重复的边,而邻接矩阵会覆盖掉上一条颜色相同的边;
此外需注意:
1. 点数为1时特判;
2. 当边数小于点数减一的时候可以直接判断无解;
3. 当两棵树最小权值相同或都有解时,需分别记录两个最小值,并分别与当时剩下的边相加,每次都需比较之后再输出两者之间的最小值。
附kruskal代码,先按边从小到大排序后再依次求解:
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std; #define INF 1e9
const int N = 1e5+;
const int M = 5e5+;
int n,m;
struct Edge {
int from, to, value;
bool operator<(const Edge &a) {
return value<a.value;
}
}edge[M];
int vis[N], f[N]; int find(int x)
{
if(x != f[x])
f[x] = find(f[x]);
return f[x];
} void init()
{
for(int i=; i<n; i++)
vis[i]=, f[i] = i;
sort(edge, edge+m);
} void kruskal()
{
int cost=;
for(int i=; i<m; i++) {
int x = find(edge[i].from);
int y = find(edge[i].to);
if(x != y) {
f[x] = y;
cost += edge[i].value;
vis[edge[i].from] = vis[edge[i].to] = ;
}
}
cout<<cost<<endl;
} int main()
{
cin>>n>>m;
for(int i=; i<m; i++)
cin>>edge[i].from>>edge[i].to>>edge[i].value; init();
kruskal(); return ;
}
【2018百度之星资格赛】F 三原色图 - 最小生成树的更多相关文章
- 2018百度之星资格赛A B F
A.调查问卷 度度熊为了完成毕业论文,需要收集一些数据来支撑他的论据,于是设计了一份包含 mm 个问题的调查问卷,每个问题只有 'A' 和 'B' 两种选项. 将问卷散发出去之后,度度熊收到了 nn ...
- 【2018百度之星资格赛】 A 问卷调查 - 位运算&动规
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=6344 参考博客:在此感谢http://www.cnblogs.com/LQLlulu/p/941923 ...
- 2018百度之星资格赛T2 子串查询
[题解] 很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数.效率O(N^2),无法通过全部数据. 我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0 ...
- HDU - 6344 2018百度之星资格赛 1001调查问卷(状压dp)
调查问卷 Accepts: 1289 Submissions: 5642 Time Limit: 6500/6000 MS (Java/Others) Memory Limit: 262144 ...
- 2016百度之星 资格赛ABCDE
看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...
- HDU 5688:2016"百度之星" - 资格赛 Problem D
原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5686:2016"百度之星" - 资格赛 Problem B
原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5685:2016"百度之星" - 资格赛 Problem A
原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others) ...
- HDU6383 2018 “百度之星”程序设计大赛 - 初赛(B) 1004-p1m2 (二分)
原题地址 p1m2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
随机推荐
- <form> 标签的entype属性
entype属性规定在发送到服务器之前应该如何对表单数据进行编码. 属性值 描述 application/x-www-form-urlencoded 在发送前编码所有字符(默认) multipart/ ...
- Python中关键字global与nonlocal的区别
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/xCyansun/article/details/79672634终于下定决心学习Python了.既然 ...
- linux怎么返回上级目录啊,用cd/命令却这样:bash:cd/:没有那个文件或目录
多打一个空格键盘又不会坏.cd 空格 .. 是上一级cd 空格 / 是回最高级,也就是 / 相应的cd 空格 ../../abc 就是去上级目录的上级目录里面的 abc 目录里.Linux 里面,所有 ...
- mysql数据库中的十进位是什么意思?
一般在用小数的时候才有用,比如类型你设置了double,十进位你设为2,那么你可以放0.22的值,但是放0.222的值它会自动四舍五入为0.22,相当于小数位数吧
- VS2015 razor 提示一闪而过
出现的问题链接地址 https://social.microsoft.com/Forums/azure/zh-CN/ff308f71-c743-4f8c-b5e4-a7260c8b5f59/vs201 ...
- JS浮点数精度运算
一般来讲,我们在项目中必不可少的需要进行各种数值的计算,但是这种计算全部放在服务端会给服务器带来很大的压力,所以势必要客户端来 分担一些计算的压力. 从客户端来说,JavaScript是一门弱类型语言 ...
- bzoj 1492: [NOI2007]货币兑换Cash【贪心+斜率优化dp+cdq】
参考:http://www.cnblogs.com/lidaxin/p/5240220.html 虽然splay会方便很多,但是懒得写,于是写了cdq 首先要想到贪心的思路,因为如果在某天买入是能得到 ...
- Java中的锁机制,你真的了解吗?
学到锁说明你已经学过多线程了,只有在多线程并发的情况下才会涉及到锁,相信大家用的最多的要数synchronized了,因为这个也是最简单的,直接加在方法上就可以使一个方法同步.那么除了synchron ...
- HTML 5语义元素
- jwt的应用生成token,redis做储存
解释一下JWT JWT就是一个字符串,经过加密处理与校验处理的字符串,由三个部分组成.基于token的身份验证可以替代传统的cookie+session身份验证方法.三个部分分别如下: header. ...