数据结构 i_love(我喜欢)

问题描述

  集训队的学长们都怪怪的,如果 A 学长喜欢 B 学长, A 就会把自己的名字改
成?I_love_<B 学长的名字>?。但是奇怪的学长们很容易移情别恋,他们经常互
相喜欢来喜欢去。现在给出 n 个学长的名字和 m 个喜欢的记录,请你输出编号为
1 的学长最后的名字。

★数据输入
输入第一行为一个正整数 n。
接下来的 n 行,每行有一个学长的名字。(由大小写字母和下划线组成,长
度小于 25)
第 n+2 行为一个正整数 m。
接下来 m 行,每行两个数 u,v。表示编号为 u 的学长喜欢编号为 v 的学长。
(1<=u,v<=n)
80%的数据 1<=n,m<=1000.
100%的数据 1<=n,m<=100000.

★数据输出
输出一个字符串,表示第一个学长最后的名字。

输入示例 输出示例
5
anonymous
natalia
LeBron
Tanya_Romanova
MikeMirzayanov
6
1 2
3 4
2 1
4 3
1 4
3 2
I_love_I_love_I_love_Ta
nya_Romanova
输入示例 输出示例
2
MikhailRubinchik
evol_I
1
1 2
I_love_evol_I

解题思路

  使用like[]数组记录喜欢的人的index,使用height[]数组记录喜欢的层级(有多少个I_love_)

code

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 char names[100002][26];
 5 int like[100002];
 6 int height[100002]={0};
 7
 8 int main()
 9 {
10 //    freopen("test.txt","r",stdin);
11     int i,j;
12     int num;
13     scanf("%d",&num);
14     getchar();
15
16     for(i=1;i<=num;i++)
17     {
18         scanf("%s",names[i]);
19         getchar();
20     }
21
22     int m,a,b;
23
24     for(i=1;i<=num;i++) like[i]=i;
25     scanf("%d",&m);
26     for(i=0;i<m;i++)
27     {
28         scanf("%d %d",&a,&b);//a like b
29         like[a] = like[b];
30         height[a] = height[b]+1;
31 //        for(j=1;j<=num;j++)    printf("%s\n",names[like[j]]);
32     }
33
34 //    printf("height = %d\n",height[1]);
35     for(i=1;i<=height[1];i++) printf("I_love_");
36     printf("%s\n",names[like[1]]);
37
38     return 0;
39 }
时间: 2024-08-28 05:05:29

数据结构 i_love(我喜欢)的相关文章

The Clean Architecture--一篇很不错的关于架构的文章

翻译水平有限,见谅! Uncle Bob 13 Aug 2012 Architecture Craftsmanship Over the last several years we've seen a whole range of ideas regarding the architecture of systems. These include: 在过去的几年里,我们已经看到了关于系统架构的一系列想法,包括: Hexagonal Architecture (a.k.a. Ports and A

数据结构-B树

  1.前言: 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree).前三者是典型的二叉查找树结构,其查找的时间复杂度O(log2N)与树的深度相关,那么降低树的深度自然会提高查找效率. 但是咱们有面对这样一个实际问题:就是大规模数据存储中,实现索引查询这样一个实际背景下,树节点存储的元素数量是有限的

数据结构与算法之线性表

前言 上一篇<数据结构和算法之时间复杂度和空间复杂度>中介绍了时间复杂度的概念和常见的时间复杂度,并分别举例子进行了一一说明.这一篇主要介绍线性表. 线性表属于数据结构中逻辑结构中的线性结构.回忆一下,数据结构分为物理结构和逻辑结构,逻辑结构分为线性结构.几何结构.树形结构和图形结构四大结构.其中,线性表就属于线性结构.剩余的三大逻辑结构今后会一一介绍. 线性表 基本概念 线性表(List):由零个或多个数据元素组成的有限序列. 注意: 1.线性表是一个序列. 2.0个元素构成的线性表是空表.

Redis各种数据结构性能数据对比和性能优化实践

很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. Redis各种数据结构性能数据对比 测试工具:perf4j 性能指标:平均值,最小值,最大值,方差 对比将814条数据按单条插入到哈希MAP和哈希SET: 对比从814条数据的哈希MAP和哈希SET中判断一个元素是否存在(map的hasKey和set的isMember): 大量数据插入哈希MAP,运

如何构建逻辑清晰的可拖拽树的数据结构

在为知笔记上的每日计划已经有好几天没有写实际内容了,抓狂脸.时间真是过得超级快呀,这几天双十一,疯狂的看喜欢的东西和看快递.其实并不是为了双十一降价而买东西,而是近来本来就有买东西的打算,而且撞到了双十一前,那就干脆放购物车里好了,还有就是半年没见降价的零食也打折啦啦啦~~^_^.好喜欢双十一结束后淘宝的宣传片<再见双十一>,接下来的这个星期,就静静的等待幸福来敲门~ 言归正传,今天来分享一下关于如何构建数据结构使得页面逻辑更为清晰的思路. 事情的起因是这样的,boss安排我做一个列表拖拽页面

数据结构和算法之时间复杂度和空间复杂度

前言 上一篇<数据结构和算法>中我介绍了数据结构的基本概念,也介绍了数据结构一般可以分为逻辑结构和物理结构.逻辑结构分为集合结构.线性结构.树形结构和图形结构.物理结构分为顺序存储结构和链式存储结构.并且也介绍了这些结构的特点.然后,又介绍了算法的概念和算法的5个基本特性,分别是输入.输出.有穷性.确定性和可行性.最后说阐述了一个好的算法需要遵守正确性.可读性.健壮性.时间效率高和存储量低.其实,实现效率和存储量就是时间复杂度和空间复杂度.本篇我们就围绕这两个"复杂度"展开

与Javascript相关的数据结构和算法

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:豪情链接:http://www.zhihu.com/question/36882354/answer/69416260来源:知乎 建议先打好基础,了解js语言的特性或玩法,然后再来玩算法,个人感觉才能四两拨千斤,算法这种东西,是高级抽象的东西,简单说:是熟悉计算机语言解决日常需求的前提下,熟练的选择一种高效的做事方式,先了解如何将日常的需求或人类的自然语言转换为计算机语言,然后在进一步的确定算法在整个代码开发中所扮演的角色

数据结构- 基本概念[Chapter1 ]

数据结构 并无明确定义 - 不过有一个我很喜欢的 数据结构是ADT(抽象数据类型Abstract Data Type)的物理实现. 与算法相关 解决问题方法的效率与: 数据的组织方式有关 → 书架问题 空间的利用效率有关 循环解决PrintN void PrintN(int N) { int i; for (i = 1 ;i<N ;i++) printf("%d\n", i); return ; } 递归解决 void PrintN(int N) { if(N){ printN(

map数据结构

学习map的这种ES6新加的数据结构.在一些构建工具中是非常喜欢使用map这种数据结构来进行配置的,因为map是一种灵活,简单的适合一对一查找的数据结构.我们知道的数据结构,已经有了json和set.那map有什么特点. Json和map格式的对比 map的效率和灵活性更好 先来写一个JSON,这里我们用对象进行模拟操作 let json = { name:'js', skill:'web' } console.log(json.name); 但是这种反应的速度要低于数组和map结构.而且Map