PAT 1032. Sharing (25)
来源:互联网 发布:战龙三国进阶数据 编辑:程序博客网 时间:2024/04/28 06:37
1032. Sharing (25)
To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the same sublist if they share the same suffix. For example, "loading" and "being" are stored as showed in Figure 1.
Figure 1
You are supposed to find the starting position of the common suffix (e.g. the position of "i" in Figure 1).
Input Specification:
Each input file contains one test case. For each case, the first line contains two addresses of nodes and a positive N (<= 105), where the two addresses are the addresses of the first nodes of the two words, and N is the total number of nodes. The address of a node is a 5-digit positive integer, and NULL is represented by -1.
Then N lines follow, each describes a node in the format:
Address Data Next
where Address is the position of the node, Data is the letter contained by this node which is an English letter chosen from {a-z, A-Z}, and Next is the position of the next node.
Output Specification:
For each case, simply output the 5-digit starting position of the common suffix. If the two words have no common suffix, output "-1" instead.
Sample Input 1:11111 22222 967890 i 0000200010 a 1234500003 g -112345 D 6789000002 n 0000322222 B 2345611111 L 0000123456 e 6789000001 o 00010Sample Output 1:
67890Sample Input 2:
00001 00002 400001 a 1000110001 s -100002 a 1000210002 t -1Sample Output 2:
-1
这道题那个字母其实是没有用的,因此只要记录下当前地址与对应的下一地址就可以了。
代码如下:
#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <string>#include <cstdlib>using namespace std;int rootA,rootB,N,K;int check[100000];int myLink[100000];int main(void){cin>>rootA>>rootB>>N;memset(check,0,sizeof(check));memset(myLink,0,sizeof(myLink));for(int i = 0; i < N; i++){int start,stop;char c;scanf("%d %c %d",&start,&c,&stop);myLink[start] = stop;}while(rootA!= -1){check[rootA] = 1;rootA = myLink[rootA];}while(!check[rootB] && rootB != -1){rootB = myLink[rootB];}if(check[rootB])printf("%05d",rootB);elsecout<<"-1"<<endl;return 0;}
- 1032. Sharing (25)-PAT
- 【PAT】1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT:1032. Sharing (25)
- PAT 1032. Sharing (25)
- pat 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- PAT 1032. Sharing (25)
- 1032. Sharing (25) PAT
- PAT (Advanced) 1032. Sharing (25)
- PAT A 1032. Sharing (25)
- PAT甲 1032. Sharing (25)
- PAT(A) - 1032. Sharing (25)
- 【PAT甲级】1032. Sharing (25)
- Android - 开发IDE配置及选择
- 二进制整数的加,减运算
- cocos2d-x 对引擎修改,以实现加密资源
- NSNumber的格式化
- NSIS 进度条精确显示 (学习六)
- PAT 1032. Sharing (25)
- android 暂停和继续第三方应用的语音播放
- SQL Server 2008 TCP/IP 连接失败
- elasticsearch 大数据优化
- c# asp .net 动态创建sql数据库表
- 多线程调用DLL(面向对象)
- JS获取当前页面的URL等信息
- awk的使用
- 自动执行任务