国王的烦恼
来源:互联网 发布:java log4j mongodb 编辑:程序博客网 时间:2024/05/16 01:56
即便之前知道这题是并查集,而且自己还觉得并查集学的不错,还是没做出来。还以为是带权的,搞了半天。确实很有趣
思路:
对于此题,只需要从天数大到小判断,并连接图中节点,判断是否在某条边时,连接了两个不同的连通分支,并且在一天最多答案+1。
第一次做到排序+并查集。一直以为并查集对于顺序毫无关系
#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <iostream>#include <vector>using namespace std;const int maxn=10005;typedef long long int ll;int father[maxn];int relation[maxn];int m,n;struct node{ int u,v,w;}a[maxn*10];int find(int x){ if(father[x]!=x) father[x]=find(father[x]) ; return father[x];}bool Union(int x,int y){ int rootx=find(x); int rooty=find(y); if(rootx!=rooty) { father[rooty]=rootx; return true; } else { return false; }}int cmp(node x,node y){ return x.w>y.w;}int main(){ cin>>n>>m; for(int i=1;i<=n;i++) { father[i]=i; } for(int i=1;i<=m;i++) { scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w); } int ans=0; sort(a+1,a+1+m,cmp); int pos=-1; for(int i=1;i<=m;i++) { if(Union(a[i].u,a[i].v)) { if(a[i].w!=pos) ans++,pos=a[i].w; } } cout<<ans<<endl;}
0 0
- 国王的烦恼
- 国王的烦恼---nyoj
- 蓝桥杯 国王的烦恼
- NYOJ_国王的烦恼
- 国王的烦恼
- 历届试题 国王的烦恼
- NYOJ 925 国王的烦恼
- nyoj 925 国王的烦恼
- 历届试题 国王的烦恼
- NYOJ 925 国王的烦恼
- NYOJ.925国王的烦恼
- 国王的烦恼 解题报告
- 蓝桥杯 历年试题 国王的烦恼
- 蓝桥杯—国王的烦恼
- 国王的烦恼 并查集
- 蓝桥杯 历届试题 国王的烦恼
- 蓝桥杯 历届试题 国王的烦恼
- 并查集-国王的烦恼
- Opencv2系列学习笔记12(检测fast特征)
- PHP引用与global操作符
- 一家反欺诈公司的面试经历——11.hashmap的工作原理
- 【设计模式】十一个行为型模式
- B1022.D进制的A+B (20)
- 国王的烦恼
- android studio ndk编译原生可执行文件
- 【Unity&DragonBones】DB的资料总览
- VMware中安装Centos7以及联网方式的选择
- 一只大二狗的Android历程--开端
- uva12325(分类枚举)
- 函数版万年历
- 利用JEXL实现动态表达式编译
- HDU2050 折线分割平面