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 ...
随机推荐
- 00 在Windows环境中开发Cordova项目的准备工作
1.开发环境准备: 安装nodejs 安装Cordova 安装Visual Studio Code 安装nodejs步骤: 通过nodejs官网(https:/ ...
- Azure内容审查器之羞羞图审查
上一篇 Azure 内容审查器之文本审查我们已经介绍了如果使用Azure进行文字内容的审核.对于社区内容,上传的图片是否含有羞羞内容也是需要过虑的.但是最为一般开发者自己很难实现这种级别的智能识别.但 ...
- ASP。NET控件—控件如何相互关联
介绍 这是我关于ASP系列的另一篇小文章.NET控件,它的主要焦点是揭示控件如何相互关联,涉及哪些实体,以及它们在此任务中的主要角色是什么. 动机 理解每次处理页面请求和某人在他的浏览器中获得您的we ...
- mysql DISTINCT选取多个字段,获取distinct后的行信息
背景: a表保存关联关系,通过ACode 获取该关系中的所有 BCode, 并获取所有Bcode-max(Bvrsn)的信息 Bnm 表a 表b 循序渐进: ...
- Makefile-4-书写命令
目录 前言 概念 Chapter 4:书写命令 4.1 显示命令 4.2 命令执行 * 4.3 命令出错 4.4 嵌套执行 make 4.5 定义命令包 参考 前言 本笔记主要记录Makefile一些 ...
- IdentityServer 3.1.x 迁移到 4.x
一.前言 IdentityServer4 4.x已经正式发布了,根据官方的 Release Note,3.1.x 到 4.x 的变更也是非常多,今天在将代码迁移到 4.x 遇到了一些问题在此记录下来, ...
- 晋城6397.7539(薇)xiaojie:晋城哪里有xiaomei
晋城哪里有小姐服务大保健[微信:6397.7539倩儿小妹[晋城叫小姐服务√o服务微信:6397.7539倩儿小妹[晋城叫小姐服务][十微信:6397.7539倩儿小妹][晋城叫小姐包夜服务][十微信 ...
- python 产生随机函数random
random是内建(built-in)函数,作用是产生随机数 导入模块: 接着就可以调用random模块下的函数了使用 dir(random)可以查看random模块下有哪些函数,结果如下: 最常用的 ...
- spring boot:spring security实现oauth2+jwt管理认证授权及oauth2返回结果格式化(spring boot 2.3.3)
一,为什么oauth2要整合jwt? 1,OAuth2的token技术有一个最大的问题是不携带用户信息,所以资源服务器不能进行本地验证, 以致每次对于资源的访问,资源服务器都需要向认证服务器的toke ...
- requests-html添加header
from requests_html import HTMLSession session = HTMLSession() headers = { "User-Agent":&qu ...