P2573 [SCOI2012]滑雪(kruskal&bfs)

这个时间胶囊相当于每个边只用走一次,也就是答案对应的图的边权之和。

考虑从1开始 b f s bfs bfs能走的点和边,建立一个新图,然后在新图跑 k r u s k a l kruskal kruskal即可。

排序的时候 h v h_v hv​为第一关键字, w w w为第二关键字。

因为要求点数尽量多,所以 h v h_v hv​尽量大,在此基础上要求权最小即可。

时间复杂度: O ( n l o g n + m ) O(nlogn+m) O(nlogn+m)

// Problem: P2573 [SCOI2012]滑雪
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P2573
// Memory Limit: 125 MB
// Time Limit: 5000 ms
// Date: 2021-12-17 11:06:56
// --------by Herio--------#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const int N=1e5+5,M=1e6+5,inf=0x3f3f3f3f,mod=1e9+7;
const int hashmod[4] = {402653189,805306457,1610612741,998244353};
#define mst(a,b) memset(a,b,sizeof a)
#define PII pair<int,int>
#define PLL pair<ll,ll>
#define x first
#define y second
#define pb emplace_back
#define SZ(a) (int)a.size()
#define rep(i,a,b) for(int i=a;i<=b;++i)
#define per(i,a,b) for(int i=a;i>=b;--i)
#define IOS ios::sync_with_stdio(false),cin.tie(nullptr)
void Print(int *a,int n){for(int i=1;i<n;i++)printf("%d ",a[i]);printf("%d\n",a[n]);
}
template <typename T>     //x=max(x,y)  x=min(x,y)
void cmx(T &x,T y){if(x<y) x=y;
}
template <typename T>
void cmn(T &x,T y){if(x>y) x=y;
}
int n,m,H[N];
int h[N],cnt;
struct edge{int to,nt,w;
}e[M<<1];
struct E{int u,v,w;bool operator<(const E&a)const{return H[v]==H[a.v]?w<a.w:H[v]>H[a.v];}
}a[M<<1];
void add(int u,int v,int w){e[++cnt]={v,h[u],w},h[u]=cnt;
}
int sum,num;
bitset<N>vis;
void bfs(){queue<int>q;q.push(1);sum++;vis[1] = 1;while(!q.empty()){int u = q.front();q.pop();for(int i=h[u];i;i=e[i].nt){int v = e[i].to;a[++num] = {u,v,e[i].w};if(!vis[v]){q.push(v),vis[v] = 1;sum++;}}}
}
int s[N];
int find(int x){return x==s[x]?x:s[x]=find(s[x]);
}
int main(){scanf("%d%d",&n,&m);rep(i,1,n) scanf("%d",&H[i]),s[i] = i;rep(i,1,m){int u,v,w;scanf("%d%d%d",&u,&v,&w);if(H[u]>=H[v]) add(u,v,w);if(H[v]>=H[u]) add(v,u,w);}bfs();int x = 0;ll ans = 0;sort(a+1,a+num+1);rep(i,1,num){int u = a[i].u,v=a[i].v,w=a[i].w;u=find(u),v=find(v);if(u!=v){s[u] = v;ans+=w;x++;}if(x==sum - 1) break;}printf("%d %lld\n",sum,ans);return 0;
}

P2573 [SCOI2012]滑雪(kruskalbfs)相关推荐

  1. 洛谷 P2573 [SCOI2012]滑雪

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1<=i<=N)和一高度Hi.a180285 ...

  2. P2573 [SCOI2012]滑雪

    题目描述 a180285 非常喜欢滑雪.他来到一座雪山,这里分布着 �m 条供滑行的轨道和 �n 个轨道之间的交点(同时也是景点),而且每个景点都有一编号 � (1≤�≤�)i (1≤i≤n) 和一高 ...

  3. 五一劳动节快乐加餐(图论补充)------P2573 [SCOI2012]滑雪

    飞机票 题意: a180285 非常喜欢滑雪.他来到一座雪山,这里分布着 mm 条供滑行的轨道和 nn 个轨道之间的交点(同时也是景点),而且每个景点都有一编号(1≤i≤n) 和一高度 hi​. a1 ...

  4. 【BZOJ 2753】 2753: [SCOI2012]滑雪与时间胶囊 (分层最小树形图,MST)

    2753: [SCOI2012]滑雪与时间胶囊 Time Limit: 50 Sec  Memory Limit: 128 MB Submit: 2457  Solved: 859 Descripti ...

  5. [SCOI2012]滑雪 洛谷p2573

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着MM条供滑行的轨道和NN个轨道之间的交点(同时也是景点),而且每个景点都有一编号ii(1 \le i \le N1≤i≤N)和一高度H_ ...

  6. [SCOI2012]滑雪 (最小生成树 Kruskal)

    题目描述 a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1≤i≤N)和一高度Hi​.a180285能从景点ii滑 ...

  7. 牛客网【每日一题】5月1日题目 [SCOI2012]滑雪与时间胶囊

    链接: 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 a180285非常喜欢滑雪.他来到 ...

  8. 【题解】 [SCOI2012]滑雪

    目录 题目 题目描述 输入格式 输出格式 输入输出样例 输入 #1 输出 #1复制 说明/提示 [数据范围] 题解 整理题目 思路 考虑顺序 1.只能从高到低 2.到的景点最多.总距离最短 坑点 最后 ...

  9. [SCOI2012]滑雪与时间胶囊

    a180285非常喜欢滑雪.他来到一座雪山,这里分布着M条供滑行的轨道和N个轨道之间的交点(同时也是景点),而且每个景点都有一编号i(1 ≤ i ≤ N)和一高度Hi.a180285 能从景点i 滑到 ...

最新文章

  1. 电脑人会得哪些病----------关注健康,关爱生命!
  2. 素数c语言程序解题思路,C语言上机实验题目解题思路.doc
  3. angularJs 前端的页面分解与组装
  4. STL的remove函数和list的remove成员函数
  5. python csv读取-python如何读取csv数据
  6. php 原生开发,四个优秀php原生开发实战视频教程推荐(必学)
  7. SharePoint Set-SPUser 命令拒绝访问
  8. 健康心理要防八种“过度”
  9. 3到6年的.NETer应该掌握哪些知识
  10. 循序渐进Python3(十二) --2--  web框架之django简单实现oracle数据库操作
  11. 远程服务异常处理的实践之一:客户端
  12. 写一个自己的QQ签名
  13. 虎牙面试官:String长度有限制吗?是多少?我:这太...
  14. c语言编程n元一次方程,解n元一次方程
  15. SPSS学习 (一)概述
  16. python中平方和_python的平方和怎么理解?
  17. c语言怎样计算天数,C语言怎样计算天数?
  18. windows错误代码一览表
  19. GCC 中的 aligned 和 packed 属性(关于地址对齐)
  20. 两圆的外切线与内切线的切点算法

热门文章

  1. 都说找工作难, 你真的好好准备了吗?
  2. 计算机课例研究方案设计,大学计算机基础案例教学与教学案例设计.doc
  3. 抖音盒子、得物、小红书混战社交电商
  4. 2020.10.24参加全球第二届移动开发者大会的一些收获
  5. css 实现倒计时转圈动画
  6. python语言不支持面向对象_Python 面向对象(初级篇)
  7. OpenCVSharp 笑脸检测
  8. 【进击的技术er】草帽计划,我和小伙伴一起乘风破浪
  9. mkdir: 无法创建目录: 没有那个文件或目录
  10. 清北毕业生2019就业去向:北大从政人数多,清华企业比例大,华为成最大赢家...