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之间有多少个数能整除区间内除了这个数的其他的数,然后区间长度减去数的个数 ...
随机推荐
- RestTemplate proxy 设置方式
RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{ setProxy(new ja ...
- List接口方法
package cn.zhou.com; /* * List?-------是啥? Collection 的一个子接口! * * 集合?容器? * * 区分容器,每个容器的数据结构不一样! * 集合, ...
- 如何调用layer.open打开的的iframe窗口中的JS
- Lodop打印控件 超文本自动分页
Lodop打印控件打印html超文本,通常传入一个超文本内容可能会超过纸张,如果要拆分每页显示哪些然后手动分页比较麻烦,Lodop中的超文本都有自动分页的特点.自动分页的依据:1.超文本超过设置的打印 ...
- linux Vi使用
前言 在嵌入式linux开发中,进行需要修改一下配置文件之类的,必须使用vi,因此,熟悉 vi 的一些基本操作,有助于提高工作效率. 一,模式vi编辑器有3种模式:命令模式.输入模式.末行模式. ...
- kubernetes 简单yaml文件运行例子deployment
运行一个deployment: kubectl run nginx-deployment --image=nginx:1.7.9 --replicas=2 基本例子: nginx-test.y ...
- springMVC (优秀篇)
本文依然是复制的 Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. 官方的下载网址是:http://www.springsource.org/download ...
- BZOJ1319Sgu261Discrete Roots——BSGS+exgcd+原根与指标+欧拉定理
题目描述 给出三个整数p,k,a,其中p为质数,求出所有满足x^k=a (mod p),0<=x<=p-1的x. 输入 三个整数p,k,a. 输出 第一行一个整数,表示符合条件的x的个数. ...
- Luogu5205 【模板】多项式开根(NTT+多项式求逆)
https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 写NTT把i<<=1写成了i<<=2,又调了一年.发现我的日常就是数组开 ...
- Typecho——数据库无法连接问题
报错 对不起,无法连接数据库,请先检查数据库配置再继续进行安装 解决方案 创建数据库 reate database databaseName; 远程权限 开启远程权限 GRANT ALL PRIVIL ...