贪心+MST——cf1095F
开始看错求最短路了。。
但是MST的思路和最短路也差不多
就是先不考虑特殊边,用最小点做一个生成树
然后加入特殊边,进行一次krus即可
#include<bits/stdc++.h>
#include<queue>
using namespace std;
#define maxn 400005
#define ll long long
ll s,ans,n,m,a[maxn],Min,tot;
struct Edge{ll x,y,w;}e[maxn<<];
int cmp(Edge a,Edge b){return a.w<b.w;}
int F[maxn];
int find(int x){return F[x]==x?x:F[x]=find(F[x]);}
void add(ll u,ll v,ll w){
e[++tot].x=u;e[tot].y=v;e[tot].w=w;
} void krus(){
sort(e+,e++m,cmp);
for(int i=;i<=m;i++){
int f1=find(e[i].x),f2=find(e[i].y);
if(f1!=f2){
F[f1]=f2;
ans+=e[i].w;
}
}
} int main(){
cin>>n>>m;
for(int i=;i<=n;i++)F[i]=i;
Min=0x3f3f3f3f3f3f3f3f;
for(int i=;i<=n;i++){//找最小的点
scanf("%lld",&a[i]);
if(a[i]<Min){
Min=a[i];
s=i;
}
} for(int i=;i<=n;i++)
if(i!=s)
add(s,i,Min+a[i]); for(int i=;i<=m;i++){
ll x,y,z;
scanf("%lld%lld%lld",&x,&y,&z);
add(x,y,z);
} m+=tot;//边的规模
krus(); cout<<ans<<endl;
}
贪心+MST——cf1095F的更多相关文章
- Codeforces.888G.Xor-MST(Borůvka算法求MST 贪心 Trie)
题目链接 \(Description\) 有一张\(n\)个点的完全图,每个点的权值为\(a_i\),两个点之间的边权为\(a_i\ xor\ a_j\).求该图的最小生成树. \(n\leq2*10 ...
- HDU 5627 Clarke and MST &意义下最大生成树 贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5627 题意:Bestcoder的一道题,让你求&意义下的最大生成树. 解法: 贪心,我们从高位 ...
- 基于MST的立体匹配及相关改进(A Non-Local Cost Aggregation Method for Stereo Matching)
怀着很纠结的心情来总结这篇论文,这主要是因为作者提虽然供了源代码,但是我并没有仔细去深究他的code,只是把他的算法加进了自己的项目.希望以后有时间能把MST这一结构自己编程实现!! 论文题目是基于非 ...
- codeforces 721B B. Passwords(贪心)
题目链接: B. Passwords time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- codeforces 480A A. Exams(贪心)
题目链接: A. Exams time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- codeforces 484A A. Bits(贪心)
题目链接: A. Bits time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- codeforces 709C C. Letters Cyclic Shift(贪心)
题目链接: C. Letters Cyclic Shift 题意: 现在一串小写的英文字符,每个字符可以变成它前边的字符即b-a,c-a,a-z这样,选一个字串变换,使得得到的字符串字典序最小; 思路 ...
- UVALive 5713 Qin Shi Huang's National Road System秦始皇修路(MST,最小瓶颈路)
题意: 秦始皇要在n个城市之间修路,而徐福声可以用法术位秦始皇免费修1条路,每个城市还有人口数,现要求徐福声所修之路的两城市的人口数之和A尽量大,而使n个城市互通需要修的路长B尽量短,从而使得A/B最 ...
- codeforces 613B B. Skills(枚举+二分+贪心)
题目链接: B. Skills time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
随机推荐
- 标准 IO fread 与 fwrite 的使用(可以实现二进制流的读写)
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); size_t fwrite(const void ...
- “使用Adobe Reader XI打开PDF文件,左侧无法显示导航列表”解决方法
在Word中将文档另存为PDF格式之后,再使用Adobe Reader XI打开,没有左侧导航列表: 解决步骤: 1.在word另存为时,在另存为对话框中,点击如下图所示的“选项” 2.在弹出的对话框 ...
- 覆盖element ui 的样式
我们可以使用 !important 来覆盖element ui 的样式 首先先在浏览器中找到 我们所要修改的样式 ,然后找到她的 class 重新写他的样式 ,例如 . app { width ...
- 28. string类中方法练习
1. 自己写trim方法 public class Demo3 { public static void main(String[] args) { System.out.println(myTrim ...
- python的format函数是什么意思format是什么意思
format是python2.6新增的一个格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能替代字符串类型 2.单个参数可以多次输出,参数顺序 ...
- Linux批量解压缩脚本
#!/bin/bash # 批量解压缩脚本 # 作者: shaohsiung # 时间: // # Store all file names in the tmp directory with the ...
- js 数组排序 根据两个字段属性
var task = [ {name:"aa", taskLevel:"3",createTime:"2019-12-18"}, {name ...
- Delphi 时间函数:关于时间精确的几个函数和方法
//取毫秒级时间精度(方法一): var t1,t2:int64; r1:int64; begin t1:=GetTickCount;//获取开始计数 WINDOWS API sleep(1000); ...
- 二分图hall定理应用+二分+双指针——cf981F(好题)
/* 二分答案,判mid是否合法 如何判断:如果是在直线上,那么遍历匹配即可 现在在环上,即既可以向前匹配也可以向后匹配,那么将环拆开,扩展成三倍 显然a和b的匹配边是不可能交叉的,因为交叉必定没有不 ...
- delphi 不规则窗体与桌面宠物
二.支持区域操作的编程接口在Windows的API函数中有一组用于区域操作的函数,可以用来生成区域.合并区域.获取区域数据.根据数据生成区域.把区域和窗体联系等,其中常用的几个函数有:生成矩形区域的C ...