题目链接

这个题不难,但是有点小小坑。

首先并查集肯定能看出来。

然后字符串的话,一开始我想用 hash 来处理,但想了想,离散化不好搞,人也太多了,一不小心就hash重了,还是算了。

然后就想到了STL 的 map :

  我一开始先用 map 讲人名转化为 数字 来并查集,结果写到最后发现还得将 数字 转化为 人名 输出,得再开一个 map 。这还没啥,最主要的是我发现int转string时不好存,不好输出,只好放弃。

  然后一想,没必要转化为int型并查集,直接用string并查集就完事了。

代码:

#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <map>
using namespace std;
map <string,string> p;//思路重点
string find(string x){//直接string并查集,连fa数组都不用开
if(x!=p[x])
p[x]=find(p[x]);
return p[x];
}
string s,s1;//s1记录当前的father
int main(){
register char ch;
cin>>ch;
while(ch!='$'){
cin>>s;
if(ch=='#'){
s1=s;
if(p[s]=="")
p[s]=s;
}
else if(ch=='+')
p[s]=s1;
else
cout<<s<<' '<<find(s)<<endl;
cin>>ch;
}
return ;
}

Luogu [P2814] 家谱的更多相关文章

  1. 洛谷P2814 家谱

    P2814 家谱 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系 ...

  2. 洛谷——P2814 家谱

    P2814 家谱 题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系 ...

  3. 洛谷 P2814 家谱(gen)

    题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...

  4. 洛谷 P2814 家谱

    题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...

  5. 洛谷P2814 家谱(gen)

    题目背景 现代的人对于本家族血统越来越感兴趣. 题目描述 给出充足的父子关系,请你编写程序找到某个人的最早的祖先. 输入输出格式 输入格式: 输入由多行组成,首先是一系列有关父子关系的描述,其中每一组 ...

  6. P2814 家谱

    我真没什么创意了woc.. so,为什么一道水题是蓝色的???哦哦哦,水好像就是蓝色的,emmm那就不是恶意评分了嘤嘤嘤 ... 好吧实际上可能是非c党对于字符串的处理需要进行编号和结构体,会麻烦一点 ...

  7. 浅谈并查集&种类并查集&带权并查集

    并查集&种类并查集&带权并查集 前言: 因为是学习记录,所以知识讲解+例题推荐+练习题解都是放在一起的qvq 目录 并查集基础知识 并查集基础题目 种类并查集知识 种类并查集题目 并查 ...

  8. 【Luogu】P1472奶牛家谱(DP)

    题目链接 这是一道考思维的好题. 一开始设f[i][j]是i个点刚好j层的方案数,死活调不出来,看题解发现可以改为<=j层的方案数,最后输出f[n][m]-f[n][m-1]就好了. 对于计算考 ...

  9. 家谱(gen)——洛谷P2814

    #include <iostream> #include <string> #include <map> using namespace std; map < ...

随机推荐

  1. puppet的一个Bug

    前篇文章写了使用puppet管理500多台服务器,当然只是一部分,最主要的还是puppet脚本的编写,这个我会在以后的文章中一点一点写出来. 今天要写的是puppet的一个bug,版本是puppet ...

  2. (转)System.Web.Mvc.UrlHelper的学习与使用

    转载自http://www.cnblogs.com/longgel/archive/2010/02/06/1664884.html 上一次学习了HtmlHelper帮助类,这次我们学习一下UrlHel ...

  3. postgresql数据库linux下设置开机自启动

    设置PostgreSQL开机自启动PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下cd /opt/soft_bak/postgre ...

  4. 大话Spark(2)-Spark on Yarn运行模式

    Spark On Yarn 有两种运行模式: Yarn - Cluster Yarn - Client 他们的主要区别是: Cluster: Spark的Driver在App Master主进程内运行 ...

  5. js怎样实现继承

    js实现继承的5种方式 js是门灵活的语言,实现一种功能往往有多种做法,ECMAScript没有明确的继承机制,而是通过模仿实现的,根据js语言的本身的特性,js实现继承有以下通用的几种方式1.使用对 ...

  6. Codeforces Round #364 (Div. 2) C

    Description Sergei B., the young coach of Pokemons, has found the big house which consists of n flat ...

  7. DateAdapter

    import java.text.SimpleDateFormat;import java.util.Date; import javax.xml.bind.annotation.adapters.X ...

  8. vue——运行一个项目

    教程:https://segmentfault.com/a/1190000009871504 启动:cnpm run dev

  9. JD孔_20160912

    1.买的 “航嘉(Huntkey)大白803 8位3米 总控开关 防过载保护 插座/排插/拖”  http://item.jd.com/1786149.html#product-detail 2.

  10. Is It A Tree?(hdu1325)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1325 Is It A Tree? Time Limit: 2000/1000 MS (Java/Oth ...