Codeforces Round #529 (Div. 3) F.Make It Connected
题意:
有 n 个顶点,每个顶点有个花费 a[ i ],连接顶点 u,v 需要花费 a[v]+a[u]的代价。
有 m 个特殊边,每条边有三个参数 u,v,w 代表的意思是连接 u,v 的花费可以不是 a[v]+a[u] 而是 w(当然选择小的那个啦)。
求联通所有的顶点需要的最少花费?
题解:
首先,需要建图,改如何建呢?
考虑到贪心的思路,首先不考虑 m 个特殊边,如何用最少的花费联通所有顶点呢?
答案是找到 a[ i ] 最少的顶点 i,其他 n-1 个顶点全部连向 i 。
将这 n-1 条边记录下来,在加上 m 条特殊边,然后,就是求最小生成树的模板题了,emmmmmm
AC代码:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
#define ll __int64
#define pb(x) push_back(x)
const int maxn=2e5+; int n,m;
ll a[maxn];
struct Node
{
int u,v;
ll w;
Node(int a,int b,ll c):u(a),v(b),w(c){}
};
vector<Node >G;
void addEdge(int u,int v,ll w)
{
G.pb(Node(u,v,w));
} int fa[*maxn];
int Find(int x)
{
int r=x;
while(r != fa[r])
r=fa[r];
while(fa[x] != r)
{
int temp=fa[x];
fa[x]=r;
x=temp;
}
return r;
}
bool Union(int x,int y)
{
x=Find(x),y=Find(y);
if(x != y)
{
fa[x]=y;
return true;
}
return false;
}
bool cmp(Node _a,Node _b)
{
return _a.w < _b.w;
}
ll Solve()
{
sort(G.begin(),G.end(),cmp);
ll res=;
for(int i=;i < G.size();++i)
{
Node e=G[i];
if(Union(e.u,e.v))
res += e.w;
}
return res;
}
int main()
{
scanf("%d%d",&n,&m);
int minP=;
for(int i=;i <= n;++i)
{
fa[i]=i;
scanf("%I64d",a+i);
minP=(minP == || a[minP] > a[i] ? i:minP);
}
for(int i=;i <= n;++i)
addEdge(i,minP,a[i]+a[minP]);
for(int i=;i <= m;++i)
{
int u,v;
ll w;
scanf("%d%d%I64d",&u,&v,&w);
addEdge(u,v,w);
}
printf("%I64d",Solve());
return ;
}
Kruskal
Codeforces Round #529 (Div. 3) F.Make It Connected的更多相关文章
- Codeforces Round #529 (Div. 3) F. Make It Connected (贪心,最小生成树)
题意:给你\(n\)个点,每个点都有权值,现在要在这\(n\)个点中连一颗最小树,每两个点连一条边的边权为两个点的点权,现在还另外给了你几条边和边权,求最小权重. 题解:对于刚开始所给的\(n\)个点 ...
- # Codeforces Round #529(Div.3)个人题解
Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...
- Codeforces Round #485 (Div. 2) F. AND Graph
Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Descri ...
- Codeforces Round #486 (Div. 3) F. Rain and Umbrellas
Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...
- Codeforces Round #501 (Div. 3) F. Bracket Substring
题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- Codeforces Round #529 (Div. 3) E. Almost Regular Bracket Sequence (思维)
Codeforces Round #529 (Div. 3) 题目传送门 题意: 给你由左右括号组成的字符串,问你有多少处括号翻转过来是合法的序列 思路: 这么考虑: 如果是左括号 1)整个序列左括号 ...
- Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)
题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...
- Codeforces Round #271 (Div. 2) F. Ant colony (RMQ or 线段树)
题目链接:http://codeforces.com/contest/474/problem/F 题意简而言之就是问你区间l到r之间有多少个数能整除区间内除了这个数的其他的数,然后区间长度减去数的个数 ...
随机推荐
- mybatis-spring-1.2.2.jar下载地址
http://www.java2s.com/Code/Jar/m/Downloadmybatisspring120jar.htm
- poj-2823(单调队列)
题意:给你长度位n的数组,问每个长度为m的段的最值: 解题思路:这道题是单调队列的入门题: #include<iostream> #include<algorithm> #in ...
- UVA 11988 Beiju Text
https://vjudge.net/problem/UVA-11988 题目 你有一个破损的键盘.键盘上所有的键都可以正常工作,但有时候Home键或者End键会自动按下.你并不知道键盘存在这一问题, ...
- Spring 使用介绍(七)—— Spring事务
一.数据库事务概述 1.基本介绍 事务必需满足ACID(原子性.一致性.隔离性和持久性)特性,缺一不可: 原子性(Atomicity):即事务是不可分割的最小工作单元,事务内的操作要么全做,要么全不做 ...
- BZOJ2242[SDOI2011]计算器——exgcd+BSGS
题目描述 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p, ...
- Luogu5289 十二省联考2019字符串问题(后缀数组+拓扑排序+线段树/主席树/KDTree)
先考虑80分做法,即满足A串长度均不小于B串,容易发现每个B串对应的所有A串在后缀数组上都是一段连续区间,线段树优化连边然后判环求最长链即可.场上就写了这个. 100分也没有什么本质区别,没有A串长度 ...
- 洛谷3707 [SDOI2017] 相关分析 【线段树】
分析: 化简一下就行了,注意一下平方和公式的运用以及精度的误差. 代码: #include<bits/stdc++.h> using namespace std; ; int n,m; i ...
- 【BZOJ2208】【JSOI2010】连通数 传递闭包
题目描述 定义一个图的连通度为图中可达顶点对的数目.给你一个\(n\)个点的有向图,问你这个图的连通度. \(n\leq 2000,m\leq n^2\) 题解 一个很简单的做法就是传递闭包:像flo ...
- Data truncation: Data too long for column 'content' at row 1
项目运行报错: Data truncation: Data too long for column 'content' at row 1 是由于字段长度太小导致的 搜索mysql 中text 字段长度 ...
- SDOI2017 Round1 简要题解
我们 TM 怎么又要上文化课..我 哔哔哔哔哔哔 「SDOI2017」数字表格 题意 有 \(T\) 组数据,求 \[ \prod_{i = 1}^{n} \prod_{j = 1}^{m} fib[ ...