[HDU - 2860]Regroup
时间:2019-08-21
本文章向大家介绍[HDU - 2860]Regroup,主要包括[HDU - 2860]Regroup使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
并查集。
新兵入伍。三种操作:①入伍②合并队伍③查找一个队伍里面战斗力最弱的。注意队伍编号从0开始。
多了一个记录每个集合最小值的minn数组而已,然后判断的时候小心一点就可以了。
#include <cstdio> #include <cstring> #include <iostream> using namespace std; #define maxn 200000 + 10 #define inf 0x3f3f3f3f int father[maxn]; int minn[maxn]; int Find(int x){ return father[x] == x ? x : father[x] = Find(father[x]); } int n, k, m; int main() { while (~scanf("%d %d %d", &n, &k, &m)) { for (int i = 0; i < n; i++) { father[i] = i; minn[i] = inf; } int ans = 0; for (int i = 0; i < k; i++) { int belong; int val; scanf("%d %d", &val, &belong); minn[belong] = min(minn[belong], val); } for (int i = 0; i < m; i++) { char s[10]; scanf("%s", s); if (s[0] == 'G') { int temp; scanf("%d", &temp); if (father[temp] == temp) { if (minn[temp] != inf) printf("Lowest rate: %d.\n", minn[temp]); else printf("Company %d is empty.\n", temp); } else { int belong = Find(temp); printf("Company %d is a part of company %d.\n", temp, belong); } } else if (s[0] == 'M') { int x, y; scanf("%d %d", &x, &y); if (x == y) { puts("Reject"); continue; } if (father[x] == x && father[y] == y) { father[y] = x; minn[x] = min(minn[x], minn[y]); puts("Accept"); } else puts("Reject"); } else if (s[0] == 'A') { int val, belong; scanf("%d %d", &val, &belong); if (father[belong] != belong) { puts("Reject"); continue; } minn[belong] = min(minn[belong], val); puts("Accept"); } } printf("\n"); } return 0; }
原文地址:https://www.cnblogs.com/Vikyanite/p/11388014.html
- 鱼与熊掌兼得,既要云服务创新也要管理传统网络
- Django-model进阶(中介模型,查询优化,extra,整体插入)
- flask-session组件
- day10、nfs+rsync全网备份及实时同步
- Flask-信号(blinker)
- Python中的单例模式的几种实现方式的及优化
- 程序员学习python必备的4大网站,你用过几个?
- 知面不知心?AI帮你看懂对方的“小心思”
- 数据库连接池,本地线程,上下文管理
- 2018年微信小程序风口趋势预测
- 小程序走在取代APP路上
- 重磅!小程序社交立减金全面开放,快来领攻略
- VR/AR未来何去何从?
- 使用Python+Tensorflow的CNN技术快速识别验证码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android 实现秒转换成时分秒的方法
- Android实现简单用户注册案例
- Android原生视频播放VideoView的使用
- Android table布局开发实现简单计算器
- Android实现面包屑功能的代码(支持Fragment联动)
- Android自定义带动画效果的圆形ProgressBar
- Android App启动图启动界面(Splash)的简单实现代码
- WordPress头部去除window._wpemojiSettings代码
- Android小程序实现选项菜单
- Linux VPS安装Google Authenticator实现SSH登陆二次验证
- Android小程序实现访问联系人
- Android小程序实现切换背景颜色
- 浅析Android加载字体包及封装的方法
- android实现滑动标签页效果的代码解析
- Android PC端用ADB抓取指定应用日志实现步骤