swjtuoj2433 Magic Mirror
Magic Mirror is an artificial intelligence system developed by TAL AI LAB,It can determine human based on human bone information.
Meternal use the magic mirror API,then he found after he input some photo to the system,it will output the two endpoint features of each bone of the human body.
a bone can be described by a integer pair like (1,2) represent this bone consists of endpoint 1 and endpoint 2 .
We can think that everyone’s bones endpoint features are unique.
But when using the magic mirror's API, Meternal broke all the order, and now you need to help him determine the endpoint features that each person has.
The system may contain some unused information which never included in any bone,please skip them.
The data contains n types of endpoints and m bones which described by a pair.
The first line contains two integer n(1≤n≤200000) and m(1≤m≤200000) ,the number of endpoint and bones.
The following m lines,
each line contains two integer a(1≤a≤n) and b(1≤b≤n),the features of two endpoint of this bone.
The output contains some lines of bone endpoint information.
Please output the information of each person in according order by the smallest endpoint number of this person.
For the i-th line information first outputs the number k, the endpoint contained by this person.
then outputs k endpoint number in ascending order.
When the output is complete, output a line "Finish".
please skip unused endpoint.
6 4
1 3
2 5
3 3
3 4
3 1 3 4
2 2 5
Finish
==========================================================================================================
思路:本题考查查并集的基本操作,输出时要求一个集合一个集合输出,集合内的输出顺序为从小到大,集合间的顺序以集合最小元素按升序输出。
可选用vector来存储一个集合,将元素从小到大遍历,每找到一个未输出的集合,便找到相应的vector输出里面的全部元素。最后一行输出Finish。
注意点:
- 直接暴力搜索每一个元素会超时,将每个集合放在一起可避免无效搜索。
- 两个根节点相同时合并时,会出现错误,不要忘记在合并前判定其根节点是否相等。
1 #include<stdio.h>
2 #include<vector>
3 using namespace std;
4
5 const int Maxn = 200005;
6 int set[Maxn];
7 vector<int> ans[Maxn];
8 int sign[Maxn];
9 void init(){
10 for(int i = 0; i < Maxn; i++){
11 set[i] = -1;
12 }
13
14 }
15
16 int Find(int d1){
17 if(set[d1] < 0){
18 return d1;
19 }
20 set[d1] = Find(set[d1]); //路径压缩
21 return set[d1];
22 }
23
24 void Union(int d1,int d2){
25 int root1 = Find(d1);
26 int root2 = Find(d2);
27 if(root1==root2){
28 return;
29 }
30 if(set[root1] > set[root2]){ //按秩归并
31 set[root2] += set[root1];
32 set[root1] = root2;
33 }else{
34 set[root1] += set[root2];
35 set[root2] = root1;
36 }
37 return ;
38 }
39
40
41 int main(){
42 init();
43 int n,m;
44 scanf("%d %d",&n,&m);
45 while(m--){
46 int d1,d2;
47 scanf("%d %d",&d1,&d2);
48 Union(d1,d2);
49 }
50
51 for(int i = 1; i < Maxn; i++){
52 ans[Find(i)].push_back(i);
53
54 }
55 for(int i = 1; i < Maxn ; i++){
56 if(sign[Find(i)] == 1||set[Find(i)] > -2){
57 continue;
58 }
59 sign[Find(i)] = 1;
60 printf("%d", -set[Find(i)]);
61 for(int j = 0; j < ans[Find(i)].size();j++){
62 printf(" %d",ans[Find(i)][j]);
63 }
64 printf("\n");
65 }
66 printf("Finish");
67 }
swjtuoj2433 Magic Mirror的更多相关文章
- 2018ACM/ICPC 焦作网络预选赛-A Magic Mirror
Jessie has a magic mirror. Every morning she will ask the mirror: 'Mirror mirror tell me, who is the ...
- ACM-ICPC 2018 焦作赛区网络预赛 A Magic Mirror(签到)
https://nanti.jisuanke.com/t/31710 题意 若输入的是Jessie或jessie,输出Good guy!,否则输出Dare you say that again? 分析 ...
- 树莓派:使用OpenCV调用自带的摄像头.
总所周知,树莓派上,调用摄像头的指令有raspistill和raspivid.若要使用opencv对摄像头进行调用,不少人会出现 cvCaptureFromCAM(0)函数无法找到Pi Cam的错误情 ...
- Analysis Guidelines
This section describes some best practices for analysis. These practices come from experience of ana ...
- 2018 ACM 网络选拔赛 焦作赛区
A. Magic Mirror #include <cstdio> #include <cstdlib> #include <cmath> #include < ...
- Codeforces Round #359 (Div. 2) A. Free Ice Cream 水题
A. Free Ice Cream 题目连接: http://www.codeforces.com/contest/686/problem/A Description After their adve ...
- ACM-ICPC 2018 焦作赛区网络预赛 Solution
A. Magic Mirror 水. #include <bits/stdc++.h> using namespace std; int t; ]; inline bool work() ...
- Codeforces Round #359 (Div. 2) A
A. Free Ice Cream time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- ACM-ICPC 2018 焦作赛区网络预赛
这场打得还是比较爽的,但是队友差一点就再过一题,还是难受啊. 每天都有新的难过 A. Magic Mirror Jessie has a magic mirror. Every morning she ...
随机推荐
- 零基础小白必看篇:从0到1构建Python Web框架
造轮子是最好的一种学习方式,本文尝试从0开始造个Python Web框架的轮子,我称它为ToyWebF. 本文操作环境为:MacOS,文中涉及的命令,请根据自己的系统进行替换. ToyWebF的简单特 ...
- Emgu.CV怎么加载Bitmap
EmguCV 在4.0.1版本之后没办法用Bitmap创建Image了. 我给大家说下 EmguCV怎么加载Bitmap 下边是 EmguCV 官方文档写的,意思是从4.0.1以后的版本不能直接Bit ...
- 制作u盘启动盘
制作u盘启动盘 如果是想要制作 windows 系统启动盘,windows 官网提供途径,这里不在赘述. 以下讨论制作 centos 系统启动盘,需要 centos 系统文件,开源,可从官网下载得到. ...
- 这个网易云JS解密,老网抑云看了都直呼内行
最近更新频率慢了,这不是因为CK3发售了嘛,一个字就是"肝".今天来看一下网易云音乐两个加密参数params和encSecKey,顺便抓取一波某歌单的粉丝,有入库哦,使用mysql ...
- id+is+深浅co'p'y
day06 一.id.is 关键字:id #唯一的,如果id相同,说明2个变量指向同一个地址,就是变量一==变量二 注意:id相同值一定相同,值相同但是id不一定相同(不同代码块的值相同,他们就像太阳 ...
- 高效的后端API开发模板-illuminant
概要 整体介绍 补充说明 Q. 有了 prisma 自动生成的 graphql 接口, 为什么还要 rest 接口和 websocket 接口? Q. 为什么要通过 illuminant 加一层反向代 ...
- day33 Pyhton 常用模块03
一.正则表达式: 1.元字符 . 匹配除换行符以外的任意字符 \w 匹配字母或数字或下划线 \s 匹配任意的空白符 \d 匹配数字 \n 匹配一个换行符 \t 匹配一个制表符 \b 匹配一个单词的结尾 ...
- 解决Java连接Oracle 12c存在的问题
感谢作者 原文链接:https://blog.csdn.net/peng_wei_kang/article/details/80403486 1.发现项目报以下错误: Caused by: jav ...
- 在学习python的过程中,遇到的最大的困难是什么?
本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是 ...
- 看完本文若不能让你学通“Python”,我将永远退出IT界
学Python,切忌今天这学一点,明天那里学一点,零零散散没有系统的学习.这样不仅耽搁大家时间,久而久之也会消磨大家学习的兴致!这里给大家总结了一张系统的Python学习路线图!希望大家共勉! Pyt ...