Gym - 100989J -(DFS)

题目链接:http://codeforces.com/gym/100989/problem/J

J. Objects Panel (A)
time limit per test
1.0 s
memory limit per test
256 MB
input
standard input
output
standard output

Raihan is helping Maram and Master Hasan in the design of their graduation project. They have a panel that shows a list of the objects created by the user. Objects can be nested inside each other, the user can click the '-' sign to collapse the items nested inside an object, or click the '+' sign to expand the objects nested inside it.

Check the following table for more details:

 

Note that all objects are nested inside a list item called project.

For each object in the project, you are given a list of objects nested inside it and whether it’s expanded or collapsed. Can you help Raihan in drawing the panel?

Input

The first line of input contains an integer N (0 ≤ N ≤ 100), the number of objects in the project. Objects are numbered from 1 to N. The project item is item number 0.

Each of the following N + 1 lines contains the description of an object. The ith(starting from 0) line describes the object number i in the following format:

S K A1 A2 ... AK

Where S is the state of the object (expanded or collapsed), where '-' means it's expanded and '+' means it's collapsed. The state of objects that do not have any nested objects will be '-'.

K is the number of objects nested inside this object, this number is followed by Kdistinct numbers representing the numbers of the nested objects.

Output

Output the current state of the list, the items nested in an object should be listed in the given order.

An object inside another is nested by two spaces, the first space is replaced with '+' or '-' depending on the state of the object, if the object does not have other objects inside it, then keep the space.

Examples

Input
6
- 3 2 5 1
+ 1 3
- 1 6
- 1 4
- 0
- 0
- 0
Output
- project
- object2
object6
object5
+ object1
Input
0
- 0
Output
  project

题意:按照给出的项目要求,输出对象列表。

思路:因为他是按照先后顺序的,如果打开一个(输出)对象,接下来输出的是该嵌套在该对象中的其他对象,一直往下,直到到嵌套的最后一个对象,再依次返回上一层对象。所以很容易想到要用DFS

知道用DFS后这道题就不难了。注意一下输出格式,下面是代码。

 

 1 #include<stdio.h>
 2 #include<string.h>
 3 char s[105];
 4 int father[105];//指project的子孩子有哪些
 5 int child[105][105];//child[i][j]指对象i的第j个child;
 6 int child_number[105];//child_number[i]指对象i的孩子有多少个
 7 void DFS(char s1,int childs,int i,int w)//(是'+'还是'-',孩子数,下标,缩放第几层次) 
 8 {
 9     for(int q=0;q<w;q++)
10     printf("  ");
11     if(childs==0)
12     {
13         printf("  object%d\n",i);
14         return ;
15     }
16     else
17     {
18         printf("%c ",s1);
19         printf("object%d\n",i);
20         if(s1=='-')//只有需要展开的时候才需要DFS
21         {
22             for(int j=1;j<=childs;j++)
23             {
24                 DFS(s[child[i][j]],child_number[child[i][j]],child[i][j],w+1);
25             }
26         }
27     }
28 }
29 int main()
30 {
31     int N;
32     while (scanf("%d",&N)!=EOF)
33     {
34         getchar();
35         memset(child,0,sizeof(child));
36         char s0;int k;
37         scanf("%c%d",&s0,&k);
38         for(int i=1;i<=k;i++)
39         scanf("%d",&father[i]);
40         for(int i=1;i<=N;i++)
41         {
42             getchar();
43             scanf("%c%d",&s[i],&child_number[i]);
44             for(int j=1;j<=child_number[i];j++)
45             scanf("%d",&child[i][j]);
46         }
47         if(N==0)
48         {
49             printf("  project\n");
50         }
51         else
52         {
53             if(s0=='+')
54             printf("%c project\n",s0);
55             else
56             {
57                 printf("%c project\n",s0);
58                 for(int i=1;i<=k;i++)
59                 {
60                     DFS(s[father[i]],child_number[father[i]],father[i],1);
61                 }
62             }
63         }
64     }
65     return 0;
66 }

 

 

 

转载于:https://www.cnblogs.com/bendandedaima/p/9277584.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485706.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

艰难2020:人工智能的应用是否已停滞不前?

作者&#xff1a;Gary Grossman译者&#xff1a;Sambodhi策划&#xff1a;刘燕今年&#xff0c;每一个季度都是疯狂的一年&#xff0c;人工智能的发展同样如此。总的来说&#xff0c;这一年人工智能的发展喜忧参半&#xff0c;其中有显著的进展&#xff0c;也有对技术滥用的新发…

浅谈WM算法

1. WM&#xff08;Wu-Manber&#xff09;算法的简单理解&#xff1a;&#xff08;1&#xff09;WM算法需要的参数&#xff1a;∑&#xff1a;字母集c&#xff1a; 字母集数目m&#xff1a;模式串集合中&#xff0c;字符串长度最小的模式串的长度B&#xff1a;字符块长度&#…

AI研习丨专题:因果推断与因果性学习研究进展

来源&#xff1a;《中国人工智能学会通讯》2020年 第10卷 第5期 机器学习及其应用专题0 引言因果关系一直是人类认识世界的基本方式和现代科学的基石。爱因斯坦就曾指出&#xff0c;西方科学的发展是以希腊哲学家发明形式逻辑体系&#xff0c;以及通过系统的实验发现有可能找…

传感器的未来: 10年后我们将会生活在一个极端透明的世界

来源&#xff1a;大数据文摘作者&#xff1a;彼得戴曼迪斯2014年&#xff0c;在芬兰的一个传染病实验室里&#xff0c;卫生研究员佩特里拉特拉&#xff08;Petteri Lahtela&#xff09;发现了一件奇怪的事情&#xff0c;他突然意识到他所研究的很多问题的条件都存在着重叠。例如…

企业计算机服务器中了babyk勒索病毒怎么办,babyk勒索病毒解密数据恢复

在数字化的今天&#xff0c;网络安全威胁不断增加&#xff0c;给企业的生产生活带来了严重影响&#xff0c;使得企业不得不重视数据安全问题。近日&#xff0c;云天数据恢复中心接到企业求助&#xff0c;企业的计算机服务器中了babyk勒索病毒&#xff0c;导致企业所有计算机系统…

java yied的用法,Java多线程的wait(),notify(),notifyAll()、sleep()和yield()方法使用详解,...

Java多线程的wait()&#xff0c;notify()&#xff0c;notifyAll()、sleep()和yield()方法使用详解&#xff0c;Java多线程中的wait()&#xff0c;notify()&#xff0c;notifyAll()、sleep()和yield()方法我们先从一个案例开始&#xff1a;static public class WaitingTest {//s…

海马体启发的记忆模型

来源&#xff1a;混沌巡洋舰 记忆是人类智能的关键&#xff0c;我们因为记忆可以把过去和当下整合成为一体&#xff0c; 并且可以预测未来。记忆不仅是一个信息承载的工具&#xff0c; 更是世界模型的本体&#xff0c; 它无时无刻不在刻画未来&#xff0c; 也被当下影响&#…

DeepMind最新发现!神经网络的性能竟然优于神经符号模型

来源&#xff1a;深度学习这小事按照之前的常识&#xff0c;结合了算法和符号推理技术的神经符号模型&#xff08;Neurosymbolic Models&#xff09;&#xff0c;会比神经网络更适合于预测和解释任务&#xff0c;此外&#xff0c;神经符号模型在反事实方面表现更好。而Neural-S…

刚刚Sci-Hub和特朗普一样被永久封禁,Twitter官方:不得上诉

来源&#xff1a;量子位晓查 发自 凹非寺 公众号&#xff1a;QbitAI今天&#xff0c;Twitter官方宣布永久封禁特朗普的账号。而另一个账号的封禁恐怕更让科学界感到震惊。有用户发现&#xff0c;Sci-Hub的Twitter账号和特朗普一样&#xff0c;都被完全清空了。随后&#xff0c;…

javaweb简要介绍,虚拟路径,虚拟主机

1. 静态&#xff0c;动态&#xff1a;是否随时间&#xff0c;地点&#xff0c;用户操作的改变而改变 动态网页 需要使用到 服务端脚本语言(JSP) 2. 架构&#xff1a; CS: Client Server eg&#xff1a;qq&#xff0c;微信&#xff0c;cs游戏 不足&#xff1a; 1.如果软…

物理学中的不确定性

来源&#xff1a;人机与认知实验室吴骏&#xff08;香港中文大学通识教育基础课程讲师&#xff09;【物理研究的只是模型&#xff0c;而不是真理】物理学中的确定性问题缘起于我正在教授的《与自然对话》[1] 这门课。其中节选了詹姆士华生 (James Watson) 在2003年写的一本畅销…

JSP执行流程

第一次访问&#xff1a;服务端将jsp翻译成java&#xff0c;再将Java编译成class文件 第二次访问&#xff1a;直接访问class文件较快&#xff0c;所以第一次访问比较慢&#xff0c;以后就快了 &#xff08;如果服务器代码修改了&#xff0c;则需要重新进行翻译&#xff0c;编译…

玩电子游戏的神经网络,告诉我们大脑是如何决策的

来源&#xff1a;混沌巡洋舰当你开车的时候&#xff0c;你的大脑会接收大量的视觉信息&#xff0c;并用它来做出驾驶的决定&#xff0c;比如什么时候刹车或者换车道。大脑需要决定在你的视野中哪些信息是做出这些决定所必需的。例如&#xff0c;另一辆车的位置是非常重要的&…

2021年的第一盆冷水:有人说别太把图神经网络当回事儿

来源&#xff1a;数学中国图神经网络&#xff08;GNN&#xff09;是机器学习中最热门的领域之一&#xff0c;在过去短短数月内就有多篇优秀的综述论文。但数据科学家 Matt Ranger 对 GNN 却并不感冒。他认为这方面的研究会取得进展&#xff0c;但其他研究方向或许更重要。博客链…

JSP页面元素,内置对象及request详解

JSP的页面元素&#xff1a; a. 脚本Scriptlet 1.<% 局部变量&#xff0c;Java语句 %> 2.<%! 全局变量&#xff0c;定义方法 %> 3.<% 输出表达式 %> 一般而言&#xff0c;修改web.xml&#xff0c;配置文件&#xff0c;Java&#xff0c;需要重启tomcat服务&am…

美国科学院报告《无止境的前沿:科学的未来75年》

来源&#xff1a;科技咨询频道作者&#xff1a;刘昊 张志强 曹玲静编译&#xff1a;刘昊 张志强 曹玲静 &#xff08;中国科学院成都文献情报中心&#xff09;2020年12月17日&#xff0c;美国国家科学院出版报告《无止境的前沿——科学的未来75年》&#xff08;The Endless Fro…

jsp内置对象--response

response&#xff1a;响应对象 提供的方法&#xff1a;void addcookie(Cookie cookie);服务端向客户端增加一个cookie对象 void sendRedirect(String location) throws IOException:页面跳转的一种方式&#xff08;重定向&#xff09; void setContetType(String type) :设置…

AR增强现实技术解读

来源&#xff1a;网络 AR增强现实&#xff0c;是用户对现实世界感知的新技术。一般认为&#xff0c;AR技术的出现源于虚拟现实技术&#xff08;Virtual Reality&#xff0c;简称VR&#xff09;的发展&#xff0c;但二者存在明显的差别。传统VR技术给予用户一种在虚拟世界中完全…

人工智能十年回顾:CNN、AlphaGo、GAN……它们曾这样改变世界

来源&#xff1a;机器学习研究组订阅号过去十年间&#xff0c;人工智能技术突飞猛进&#xff0c;最疯狂的科幻小说场景现在已经成为我们生活中不可或缺的一部分。十年前&#xff0c;人们在谈论 AI 的理论化和实验&#xff0c;但这些年来&#xff0c;AI 变得更加切实了&#xff…

jsp--cookie

cookie&#xff08;客户端&#xff0c;不是内置对象&#xff09;:Cookies是服务端生成的&#xff0c;再发送给客户端保存 相当于本地缓存的作用&#xff1a; 客户端->服务端 eg&#xff1a;看一个电影&#xff0c;服务端产生发给客户端&#xff0c;第二次看就快了 作用&a…