PAT (Advanced Level) 1032. Sharing (25)
简单题,不过数据中好像存在有环的链表......
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<cstdio>
#include<map>
#include<queue>
#include<vector>
using namespace std; const int maxn=+;
struct Node
{
int id;
char c;
int nx;
} node[maxn];
int add1,add2,n; int s1[maxn],s2[maxn];
int len1=,len2=;
int m[maxn]; int main()
{
memset(m,-,sizeof m);
scanf("%d%d%d",&add1,&add2,&n);
for(int i=; i<=n; i++)
{
scanf("%d",&node[i].id);
m[node[i].id]=i;
cin>>node[i].c;
scanf("%d",&node[i].nx);
} for(int i=; i<=n; i++)
{
if(node[i].nx==-) continue;
node[i].nx=m[node[i].nx];
} memset(s1,-,sizeof s1);
memset(s2,-,sizeof s2); int now=m[add1]; while()
{
if(now==-) break;
s1[len1++]=now;
now=node[now].nx;
} now=m[add2]; bool flag[maxn];
memset(flag,,sizeof flag); int fail=; while()
{
if(now==-) break;
if(flag[now]==)
{
fail=;
break;
}
flag[now]=;
s2[len2++]=now;
now=node[now].nx;
} if(fail==)
{
printf("-1\n");
}
else
{
len1--;
len2--;
while(len1>=&&len2>=)
{
if(s1[len1]==s2[len2])
{
len1--;
len2--;
}
else break;
}
len1++;
len2++; if(s1[len1]==-) printf("-1\n");
else printf("%05d\n",node[s1[len1]].id);
}
return ;
}
PAT (Advanced Level) 1032. Sharing (25)的更多相关文章
- PAT (Advanced Level) 1078. Hashing (25)
		二次探测法.表示第一次听说这东西... #include<cstdio> #include<cstring> #include<cmath> #include< ... 
- PAT (Advanced Level) 1070. Mooncake (25)
		简单贪心.先买性价比高的. #include<cstdio> #include<cstring> #include<cmath> #include<vecto ... 
- PAT (Advanced Level) 1029. Median (25)
		scanf读入居然会超时...用了一下输入挂才AC... #include<cstdio> #include<cstring> #include<cmath> #i ... 
- PAT (Advanced Level) 1010. Radix (25)
		撸完这题,感觉被掏空. 由于进制可能大的飞起..所以需要开longlong存,答案可以二分得到. 进制很大,导致转换成10进制的时候可能爆long long,在二分的时候,如果溢出了,那么上界=mid ... 
- PAT (Advanced Level) 1003. Emergency (25)
		最短路+dfs 先找出可能在最短路上的边,这些边会构成一个DAG,然后在这个DAG上dfs一次就可以得到两个答案了. 也可以对DAG进行拓扑排序,然后DP求解. #include<iostrea ... 
- PAT (Advanced level) 1003. Emergency (25) Dijkstra
		As an emergency rescue team leader of a city, you are given a special map of your country. The map s ... 
- 【PAT甲级】1032 Sharing (25 分)
		题意: 输入两个单词的起始地址和一个正整数N(<=1e5),然后输入N行数据,每行包括一个五位数的字母地址,字母和下一个字母的地址.输出这两个单词的公共后缀首字母的地址,若无公共后缀则输出-1. ... 
- PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642
		PAT (Advanced Level) Practice 1006 Sign In and Sign Out (25 分) 凌宸1642 题目描述: At the beginning of ever ... 
- PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642
		PAT (Advanced Level) Practice 1002 A+B for Polynomials (25 分) 凌宸1642 题目描述: This time, you are suppos ... 
随机推荐
- JQuery日期选择器插件date-input
			JQuery日期选择器插件之date-input 官方网站:http://jonathanleighton.com/projects/date-input/ 下载地址: http://github.c ... 
- IOS数组
			/*******************************************************************************************NSArray ... 
- PMP项目管理学习笔记(4)——项目整合管理
			六个整合管理过程. 1.制定项目章程 一个新项目要完成的第一件事,就是项目章程的制定.这是授权你开展工作的文档.不过并不总是需要你介入,通常情况下会由赞助人交给你.如果没有项目章程,你就没有权利告诉你 ... 
- 原生js的容易忽略的相似点(二)
			1.new Object 和字面量 {}测试; <script type="text/javascript"> //1.new出来对象 console.log(obj, ... 
- MongoDB最简单的入门教程之三 使用Java代码往MongoDB里插入数据
			前两篇教程我们介绍了如何搭建MongoDB的本地环境: MongoDB最简单的入门教程之一 环境搭建 以及如何用nodejs读取MongoDB里的记录: MongoDB最简单的入门教程之二 使用nod ... 
- 在云环境上使用SLF4J对Java程序进行日志记录
			我开发了一个Java应用,部署到云环境上之后,用postman测试发现不能按照我期望的工作,但是返回的消息对我没有任何帮助. 因为部署在云端的应用很难像本地Java应用一样调试,所以我打算用SLF4J ... 
- axios token header response request http拦截器 axios实现登录、拦截、登出
			axios token header response request http拦截器 axios实现登录.拦截.登出 一个项目学会前端实现登录拦截 https://github.com/superm ... 
- js中重载问题
			在js中是没有重载的 但是 Arguments对象(可以实现模拟重载的效果) 利用arguments对象的length属性,可以获取函数接收的参数的个数 例如: function add(){ i ... 
- 打开或关闭CD_ROM
			实现效果: 知识运用: API函数 mciSendString //函数用来向媒体控制接口设备发送命令 声明如下 [DllImport("winmm.dll",EntryPoin ... 
- 框模型中设置内容区域元素占地尺寸box-sizing属性
			盒子模型有两种 一种是 内容盒子模型(content-box)一种是边框盒子模型(border-box). content-box:设置的尺寸,只设置内容区域, 左外边距+左边框+左内边距+内容区域宽 ... 
