问题 C: 瑞神要考研

时间限制: 1 Sec  内存限制: 128 MB
提交: 173  解决: 30
[提交][状态][讨论版]

题目描述

瑞神要准备考研了,为了复习数据结构,瑞神在某宝上买了一本数据结构得考研辅导资料《考研数据结构---从入门到放弃》,从此瑞神开始了愉快的复(zhuang)习(bi)。
有一天,瑞神找了好多条链表来辅助自己复习,但是他在复习的过程中一不小心把链表掉在了地上,捡起来的时候链表以及断成了好多个结点,每个结点只保留了当前结点的地址、结点的值和下一个结点的地址。瑞神看着这些结点浑身难受无法复习,为了让瑞神继续复(zhuang)习(bi)下去,请你帮瑞神把链表复原。

输入

第一行给出结点的个数n(1<=n<=100000)。
接下来n行每行给出一个结点的信息:结点地址、值和下一个结点的地址。
地址为5位数字,-1表示地址为NULL。
保证每一条链表的最后一个结点的下一个结点地址为-1。
 

输出

每一行输出一条链表,只输出每个节点的值。
多条链表按照首结点地址从小到大排序。

样例输入

<span style="background-color:#ccccff">3</span>
<span style="background-color:#ccccff">00322 155 -1</span>
<span style="background-color:#ccccff">00322 87 00323</span>
<span style="background-color:#ccccff">00233 1 -1</span>

样例输出

1
87 155

提示

校赛感悟: 今天,扎气球扎得很爽。(^.^)
欧拉路径+dfs做一直超时,赛后看大神的代码,幡然醒悟。
思路: 用next数组存两顶点先后关系,vis数组标记是否有该顶点信息,in-degree数组存该顶点的入度,然后从1开始循环(要求输出按地址从小到大),寻找入度为0的点,输出val值,然后循环找路径。
附上AC代码:
#include<iostream>
#include<cstring>using namespace std;
const int maxn=1e5+5;
int _next[maxn];
int vis[maxn];
int val[maxn];
int in_degree[maxn];
int n,fr,to,va;int main()
{ios::sync_with_stdio(false);cin>>n;memset(in_degree,0,sizeof(in_degree));memset(_next,0,sizeof(_next));for(int i=0;i<n;i++){cin>>fr>>va>>to;_next[fr]=to;val[fr]=va;vis[fr]=1;if(to!=-1)in_degree[to]++;}for(int i=0;i<maxn;i++){if(vis[i]&&in_degree[i]==0){cout<<val[i];int temp=_next[i];while(temp!=-1){cout<<' '<<val[temp];temp=_next[temp];}cout<<endl;}}return 0;
}

另附上比赛时的TLE代码:

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=1e5+5;struct edges{
int fr,to,vis,val;
}edge[maxn];int ans[maxn];
int pre,beh,wei;
int top;
int n;
bool cmp(edges a,edges b)
{return a.fr<b.fr;
}void dfs(int u)
{for(int i=0;i<n;i++){if(edge[i].vis==0&&edge[i].fr==u){edge[i].vis=1;if(edge[i].to!=-1){dfs(edge[i].to);ans[top++]=edge[i].val;}else {ans[top++]=edge[i].val;return ;}}}
}
int main()
{scanf("%d",&n);for(int i=0;i<n;i++){scanf("%d%d%d",&edge[i].fr,&edge[i].val,&edge[i].to);edge[i].vis=0;}sort(edge,edge+n,cmp);for(int i=0;i<n;i++){top=0;memset(ans,0,sizeof(ans));if(edge[i].vis==0){dfs(edge[i].fr);for(int j=top-1;j>=0;j--){if(j!=0)printf("%d ",ans[j]);else printf("%d\n",ans[j]);}}}return 0;
}

瑞神要考研(山东科技大学第四届ACM校赛)相关推荐

  1. 817计算机考研,2020考研山东科技大学817数据结构与操作系统试卷特点分析

    2020考研初试已正式结束,初试后为大家整理发布"2020考研山东科技大学817数据结构与操作系统试卷特点分析"考研试题内容,中公考研各科研究院老师将对2020考研试题进行试题变化 ...

  2. 一个彻彻底底的水军的ACM校赛感悟~~~

    2017年4月23日刚刚结束了ACM校赛.作为一名不是ACM队的水军来说,抱着必突突突的决心,参加了这次的比赛.经过五个小时的激烈角逐,我们队伍还参加了一场和我们没有什么关系的颁奖典礼. 我是一个编程 ...

  3. 2014湖南农业大学ACM校赛

    湖南农业大学 2014年 ACM 校赛Problem 2014 /2/23  星期日  12:30-17:30 A.搜素      1794.查找指定的字符串      B.链表      1795 ...

  4. 广东工业大学acm校赛总结(基础差的人的自我觉悟)

    2022.03.27 广东工业大学acm校赛总结: 实话说,这次校赛表现非常不好,B题的钩子就差一点点,分块了,也知道%k也知道分奇数偶数,就是最后差一个特判不知道怎么解决,寥寥草草一个三等奖,练了这 ...

  5. 第一次ACM校赛_记录

    [2021-10-24]第一次ACM校赛 一.报名 1.去年比赛 2.流程 二.准备 1.核心代码模式和ACM代码模式 1.1核心代码模式 1.2 ACM代码模式 2.往年题目 3.机房环境 3.1语 ...

  6. 记第七届ACM校赛-回忆

    这一次校赛其实是两个月半之前的事情了---4月29日.那天比赛完之后,自己就想当天写写这一次比赛的事,但是由于那天比赛完之后又马上又赶回家,5个小时的比赛加上2个小时的车程,整个人都觉得很累,所以那天 ...

  7. 大连海事大学ACM校赛题解

    大连海事大学ACM校赛题解 感谢xzx对题目的排版~ 作为出题人之一,我先简单说一下我认为的题目难度. 我觉着第一档比较容易的签到题是L.J.M,L就是向下取整的签到:J是简单思维.构造题,到了6以后 ...

  8. 山东科技大学第二届ACM校赛解题报告

    这次校赛的目的,是为了省赛测试各种程序是否有问题. 热身赛的逗比题有点打击我,感觉正式赛应该不会出这种问题.开始的时候直接上了A题,然后大概是第六,前面好多友情队,正式队排名第二. 然后读了读B题,稍 ...

  9. 2014哈商大ICPC/ACM校赛解题报告

    被debug邀请去參加校赛,哎,被虐..我对不起工大.. 由于本人不搞ACM,算法处于HelloWorld水准.. 虽然题目除了鸟不拉屎星人之外都非常水,但我能做到这个程度,全然是超水平发挥了.. 数 ...

最新文章

  1. Spring Boot 2.X 对 web 的开发支持(二)
  2. LSTM CNN GRU DGA比较
  3. tox.ConfigError: ConfigError: substitution key 'posargs' not found
  4. redis4.0之基于LFU的热点key发现机制
  5. 【IM】关于监督降维的理解
  6. 循环码差错图样matlab,基于MATLAB的(15,7)循环码的编译仿真.doc
  7. 如何在 ASP.NET Core 中使用 LazyCache
  8. 从串行线程封闭到对象池、线程池
  9. 终于有人把安卓程序员必学知识点全整理出来了,送大厂面经一份!
  10. Apache JMeter 背景颜色修改
  11. 信息学奥赛一本通 1233:接水问题 | 1950:【10NOIP普及组】接水问题 | OpenJudge NOI 1.9 15 | 洛谷 P1190 [NOIP2010 普及组] 接水问题
  12. Oracle数据库异常---OracleDBConsoleorcl无法启动
  13. 在使用Navicat for MySQL 出现 异常“You have an error in your SQL syntax......“
  14. 阶段3 3.SpringMVC·_03.SpringMVC常用注解_1 RequestParam注解
  15. reg 正则表达式^
  16. Java实现手机号邮箱号登录_手机号、邮箱或者用户名登录的实现方法
  17. 克服J2SE 1.3-1.4 的不兼容性
  18. zabbix纯内网环境监控服务器发送邮件报警
  19. 2013年 雷诺 Renault Zoe | 警告信息 “停车: 电力故障危险”
  20. CSS Core CSS hack CSS优化

热门文章

  1. SEO优化怎么提升网站排名
  2. matlab结束外循环,求单源最短路径的BellmanFord算法的matlab实现及其优化
  3. Java设计登录界面——GUI
  4. Robomongo的安装和配置
  5. python发送短信验证码登录_python发送短信验证码
  6. roads 用户体验标准_在你眼中的RoadMap,其实并没有那么难搞定
  7. 电机控制要点解疑:SPWM,SVPWM和矢量控制
  8. java中String.contains方法的使用详解
  9. app inventor入门详细教程(音乐播放器)01
  10. JS控制字体大小中、设为首页、收藏本站功能、超链接去掉颜色