2019.01.17 bzoj2753: [SCOI2012]滑雪与时间胶囊(最小生成树)
传送门
最小生成树菜题。
题意:给出一些有向边,问有向的最小生成树。
思路:先dfsdfsdfs一把所有有用的边都存起来,然后按终点点权为第一关键字,边权为第二关键字给边排序保证最小生成树的合法性,排完之后跑kruskalkruskalkruskal就行了。
代码:
#include<bits/stdc++.h>
#define ri register int
#define fi first
#define se second
using namespace std;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int N=2e5+5,M=2e6+5;
typedef long long ll;
typedef pair<int,int> pii;
int n,m,h[N],ans1=0,tot=0,fa[N];
bool vis[N];
vector<pii>e[N];
ll ans2=0;
struct edge{int u,v,w,c;}tt[M];
inline bool cmp(const edge&a,const edge&b){return a.c==b.c?a.w<b.w:a.c>b.c;}
inline int find(int x){return x==fa[x]?x:fa[x]=find(fa[x]);}
void dfs(int p){
vis[p]=1,++ans1;
for(ri v,i=0;i<e[p].size();++i){
tt[++tot]=(edge){p,v,e[p][i].se,h[v=e[p][i].fi]};
if(vis[v])continue;
dfs(v);
}
}
inline void kruskal(){
sort(tt+1,tt+tot+1,cmp);
for(ri i=1;i<=n;++i)fa[i]=i;
for(ri cnt=0,i=1,fx,fy;i<=tot;++i){
if(cnt==ans1-1)break;
fx=find(tt[i].u),fy=find(tt[i].v);
if(fx^fy)fa[fy]=fx,++cnt,ans2+=tt[i].w;
}
}
int main(){
n=read(),m=read();
for(ri i=1;i<=n;++i)h[i]=read();
for(ri i=1,u,v,w;i<=m;++i){
u=read(),v=read(),w=read();
if(h[u]>=h[v])e[u].push_back(pii(v,w));
if(h[v]>=h[u])e[v].push_back(pii(u,w));
}
dfs(1);
kruskal();
cout<<ans1<<' '<<ans2;
return 0;
}
2019.01.17 bzoj2753: [SCOI2012]滑雪与时间胶囊(最小生成树)的更多相关文章
- bzoj2753[SCOI2012]滑雪与时间胶囊 最小生成树
Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 2843 Solved: 993[Submit][Status][Discuss] Descripti ...
- BZOJ2753 SCOI2012 滑雪与时间胶囊 【最小生成树】*
BZOJ2753 SCOI2012 滑雪与时间胶囊 Description a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有 ...
- Bzoj2753 [SCOI2012]滑雪与时间胶囊
2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 2282 Solved: 796 Descriptio ...
- BZOJ 2753 [SCOI2012] 滑雪和时间胶囊 最小生成树
题目链接: 题目 2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MB 问题描述 a180285非常喜欢滑雪.他来到一座雪山, ...
- bzoj 2753: [SCOI2012]滑雪与时间胶囊 -- 最小生成树
2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec Memory Limit: 128 MB Description a180285非常喜欢滑雪.他来到一座雪山,这 ...
- BZOJ2753 SCOI2012滑雪与时间胶囊(最小生成树)
首先显然可以把所有能到的点拎出来建个新图,这样第一问也就做好了. 剩下的部分似乎是一个裸的最小树形图.但显然这个东西是没什么学的必要的并且不太能跑过去. 考虑建出来的图有什么性质.可以发现如果没有高度 ...
- BZOJ2753 [SCOI2012]滑雪与时间胶囊 【kruskal】
题目链接 BZOJ2753 题解 完了我连\(kruskal\)裸题都做不出来了.. 题目是求最小树形图,即有向图最小生成树 我们不能直接上\(kruskal\),而要保证先加入前面的点, 所以我们排 ...
- [BZOJ2753][SCOI2012]滑雪与时间胶囊(特殊的有向树形图)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2753 分析: 第一问:直接BFS扩展知道无法扩展 第二问: 看似就是最小树形图啊= = ...
- 2019/01/17 基于windows使用fabric将gitlab的文件远程同步到服务器(git)
觉得django项目把本地更新push到gitlab,再执行fabric脚本从gitlab更新服务器项目挺方便的,当然从本地直接到服务器就比较灵活. 2019/01/17 基于windows使用fab ...
随机推荐
- OpenGL ES 2 for Android - A Quick Start Guide
英文原版,语法很简单,带书签,带实例,很好的书,从头到尾讲述OpenGL强烈推荐!~~~ 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com ...
- ES3之变量提升 ( hoisting )
JavaScript引擎在预编译时,会将声明(函数声明.变量声明)自动提升至函数或全局代码的顶部.但是赋值不会提升. Because variable declarations (and declar ...
- 对stm32f373XX的startup.s的文件的分析
;******************** (C) COPYRIGHT 2012 STMicroelectronics ********************;* File Name : start ...
- (转)css选择器及其优先级
文章主要介绍什么是CSS选择器,CSS选择器的分类以及CSS选择器的优先级三部分内容,希望能够帮助到正在学习CSS的童鞋,有什么不足的地方欢迎大家批评指正. 一.什么是CSS选择器? CSS选择器又被 ...
- Linq 查询 List集合
总是听到身边的同事说起Linq ,知道上学的时候学过,可是自从毕业之后就再也没用过,总觉得是很牛的技能 ,可是当自己真正学会用的时候才发现,我去,So easy .废话不多说直接上代码吧 var li ...
- 28- foreach里面实现一次遍历两个链表
由于业务需求,要在一个foreach里面实现一次遍历两个链表:后台传来的是连个list: 分别是 <c:set var = "i" value = "0" ...
- go语言中的反射reflect
package main; import ( "fmt" "reflect" ) //反射refection //反射使用TypeOf和ValueOf函数从接口 ...
- Winrar发现损坏的压缩文件头
解决方法: 点击"解压到"-->保留损坏文件
- js原生语法实现表格操作
HTML页面: <!doctype html> <html lang="en"> <head> <meta charset="U ...
- 基于kafka-net实现的可以长链接的消息生产者
今天有点时间,我就来说两句.最近接触的Kafka相关的东西要多一些,其实以前也接触过,但是在项目使用中的经验不是很多.最近公司的项目里面使用了Kafka消息中间件,由于以前的人员编写的客户端的类不是很 ...