传送门

题意

分析

每次插入人名与邮箱的时候,做一次并查集,然后做一次sort即可

trick

3

a 1 first@hihocoder.com

b 1 second@hihocoder.com

c 2 first@hihocoder.com second@hihocoder.com

代码

#include <bits/stdc++.h>
using namespace std; #define ll long long
#define F(i,a,b) for(int i=a;i<=b;++i)
#define R(i,a,b) for(int i=a;i<b;++i)
#define mem(a,b) memset(a,b,sizeof(a)) int n,m;
struct node
{
int depth,fa;//节点深度及父亲/编号
string name;
node(const string &str,int depth,int id):name(str),depth(depth),fa(id){}
bool operator<(const node &p)const
{
return (fa==p.fa)?depth<p.depth:fa<p.fa;//按父亲排序,再按深度排序
}
};
vector<node>point;//记录所有的点
int find(int u){ return (point[u].fa==u)?u:point[u].fa=find(point[u].fa); }
void merge(int u,int v)
{
int fu=find(u),fv=find(v);
if(fu!=fv)
{
if(point[fu].depth>point[fv].depth) swap(fu,fv);
}
point[fv].fa=fu;
}
char buf[10010];
unordered_map<string,int>mp;//hash_map返回字符串对应的id
int get_id(const string &buf,int time)//获取id
{
if(mp.count(buf)) return mp[buf];
int sz=mp.size();
point.push_back(node(buf,time,sz));
return mp[buf]=sz;
}
vector<int>user;
int main()
{
scanf("%d",&n);
int tot=0;
F(i,1,n)
{
scanf("%s",buf);
int u=get_id(buf,tot++);
user.push_back(u);
scanf("%d",&m);
F(j,1,m)
{
scanf("%s",buf);
int v=get_id(buf,tot++);
merge(u,v);//将人名与邮箱相连接
}
}
for(auto u:user) find(u);//对于每个人名都做一次并查集
vector<node>ans;
for(auto u:user) ans.push_back(point[u]);
sort(ans.begin(),ans.end());//排序
for(int u=0;u<n;++u)
{
printf("%s",ans[u].name.c_str() );
if(u<n-1&&ans[u].fa==ans[u+1].fa) putchar(' ');
else putchar('\n');
}
return 0;
}

hihocoder #1335 : Email Merge(map+sort)的更多相关文章

  1. [大牛翻译系列]Hadoop(5)MapReduce 排序:次排序(Secondary sort)

    4.2 排序(SORT) 在MapReduce中,排序的目的有两个: MapReduce可以通过排序将Map输出的键分组.然后每组键调用一次reduce. 在某些需要排序的特定场景中,用户可以将作业( ...

  2. 分布式基础学习(2)分布式计算系统(Map/Reduce)

    二. 分布式计算(Map/Reduce) 分 布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce框架所设计的分布式框架.在Hadoop中,分布式文件 系统,很 ...

  3. 分布式基础学习【二】 —— 分布式计算系统(Map/Reduce)

    二. 分布式计算(Map/Reduce) 分布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce框架所设计的分布式框架.在Hadoop中,分布式文件系统,很大程 ...

  4. 斗地主的综合案例实现(Map有序)

    斗地主的综合案例实现(Map有序) 整体思路 代码实现 import java.util.ArrayList; import java.util.Collections; import java.ut ...

  5. [算法]——快速排序(Quick Sort)

    顾名思义,快速排序(quick sort)速度十分快,时间复杂度为O(nlogn).虽然从此角度讲,也有很多排序算法如归并排序.堆排序甚至希尔排序等,都能达到如此快速,但是快速排序使用更加广泛,以至于 ...

  6. hihoCoder 1432 : JiLi Number(吉利数)

    hihoCoder #1432 : JiLi Number(吉利数) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 Driver Ji l ...

  7. 堆排序(Heap Sort)的C语言实现

    堆排序(Heap Sort)具体步骤为 将无序序列建成大顶堆(小顶堆):从最后一个非叶子节点开始通过堆调整HeapAdjust()变成小顶堆或大顶堆 将顶部元素与堆尾数组交换,此是末尾元素就是最大值, ...

  8. 快速排序(Quick Sort)的C语言实现

    快速排序(Quick Sort)的基本思想是通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,则可分别对着两部分记录继续进行排序,以达到整个序列有序,具体步骤 ...

  9. 排序算法 (sorting algorithm)之 冒泡排序(bubble sort)

    http://www.algolist.net/Algorithms/ https://docs.oracle.com/javase/tutorial/collections/algorithms/ ...

随机推荐

  1. iOS8 PUSH解决方法

    本文转载至 http://blog.csdn.net/pjk1129/article/details/39548523     - (void)registerForRemoteNotificatio ...

  2. ipa验证错误问题总结

    The following issues were found during validation.这个error的产生原因是因为代码中写的标示符或者方法名,与系统的命名空间冲突. 具体是哪个标示符或 ...

  3. 九度OJ 1124:Digital Roots(数根) (递归)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2963 解决:1066 题目描述: The digital root of a positive integer is found by s ...

  4. Dropout: A Simple Way to Prevent Neural Networks fromOverfitting

    https://www.cs.toronto.edu/~hinton/absps/JMLRdropout.pdf Deep neural nets with a large number of par ...

  5. Kotlin基本语法笔记之函数、变量的定义及null检测

    定义函数 fun sum(a: Int, b: Int): Int { return a + b } 该函数中两个参数的类型都是Int,返回类型是Int 也可以做如下简化 fun sum(a: Int ...

  6. PHP开发工作心得

    一.扎实PHP自身的基础知识.函数.常量等,尽量用内置的方法解决这个问题(由于个人写的往往运行效率没有内置方法高): 二.代码尽量少的实现功能(由于PHP的运行事实上是,将咱们的代码先处理成底层语言进 ...

  7. mongodb学习之:文档操作

    在上一章中有讲到文档的插入操作是用insert的方法.如果该集合不在该数据库中,mongodb会自动创建该集合并插入文档 用find的方法可以查找所有的集合数据 > db.maple.find( ...

  8. 12.HTML DOM 允许 JavaScript 改变 HTML 元素的内容。

    1,改变 HTML 输出流 <script> document.write(Date()); </script> 2,改变 HTML 内容 <script> doc ...

  9. Understand .sync in Vue

    Preface The first time I met .sync modifier, I didn't know it very well. So, I seldom use that. Toda ...

  10. codeforces 701E E. Connecting Universities(树的重心)

    题目链接: E. Connecting Universities time limit per test 3 seconds memory limit per test 256 megabytes i ...