数据结构 i_love(我喜欢)
2024-09-08 14:58:55
数据结构 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
#include <stdio.h>
#include <stdlib.h> char names[][];
int like[];
int height[]={}; int main()
{
// freopen("test.txt","r",stdin);
int i,j;
int num;
scanf("%d",&num);
getchar(); for(i=;i<=num;i++)
{
scanf("%s",names[i]);
getchar();
} int m,a,b; for(i=;i<=num;i++) like[i]=i;
scanf("%d",&m);
for(i=;i<m;i++)
{
scanf("%d %d",&a,&b);//a like b
like[a] = like[b];
height[a] = height[b]+;
// for(j=1;j<=num;j++) printf("%s\n",names[like[j]]);
} // printf("height = %d\n",height[1]);
for(i=;i<=height[];i++) printf("I_love_");
printf("%s\n",names[like[]]); return ;
}
最新文章
- 【CVE-2016-10009】OpenSSH <; 7.4 - agent Protocol Arbitrary Library Loading
- 在.NET Core中遭遇循环依赖问题";A circular dependency was detected";
- dedecms标签的sql语句
- SparkSQL基础应用(1.3.1)
- taglib指令
- html里文本保留换行格式
- Android四大组件小结
- EasyDarwin返回401 Unauthorized解决方法
- [设计模式] 13 责任链模式 Chain of Responsibility
- [Jest] Test JavaScript with Jest
- The _imageingft C module is not installed
- 让低版本的IE浏览器 强制渲染为IE8 或者 以上 浏览器模式
- 每天一个linux命令(56)--crontab命令
- Flex布局(引用阮一峰大神)
- Android 代码混淆 混淆方案
- BZOJ2069 POI2004ZAW(最短路)
- cf Queries on a String
- java中自定义注释@interface的用法
- 微信发送红包示例(php)
- spring cloud: Hystrix(六):feign的注解@FeignClient:fallbackFactory(类似于断容器)与fallback方法