1032. Sharing (25)【链表】——PAT (Advanced Level) Practise

题目信息

1032. Sharing (25)

时间限制100 ms

内存限制65536 kB

代码长度限制16000 B

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 9

67890 i 00002

00010 a 12345

00003 g -1

12345 D 67890

00002 n 00003

22222 B 23456

11111 L 00001

23456 e 67890

00001 o 00010

Sample Output 1:

67890

Sample Input 2:

00001 00002 4

00001 a 10001

10001 s -1

00002 a 10002

10002 t -1

Sample Output 2:

-1

解题思路

map模拟链表

AC代码

#include <cstdio>
#include <map>
#include <vector>
using namespace std;
int main()
{
    int begin1, begin2, n, prev, next, r = -1;
    char ch;
    map<int, int> mp;
    scanf("%d%d%d", &begin1, &begin2, &n);
    while (n--){
        scanf("%d %*c %d", &prev, &next);
        mp[prev] = next;
    }
    vector<int> v1, v2;
    while (begin1 != -1){
        v1.push_back(begin1);
        begin1 = mp[begin1];
    }
    while (begin2 != -1){
        v2.push_back(begin2);
        begin2 = mp[begin2];
    }
    unsigned int end = 1;
    while (v1.size() >= end && v2.size() >= end &&
            v1[v1.size() - end] == v2[v2.size() - end]){
        ++end;
    }
    if (end != 1) printf("%05d\n", v1[v1.size() - end + 1]);
    else printf("-1\n");
    return 0;
}
时间: 2024-10-26 04:53:43

1032. Sharing (25)【链表】——PAT (Advanced Level) Practise的相关文章

1093. Count PAT&#39;s (25)【计数】——PAT (Advanced Level) Practise

题目信息 1093. Count PAT's (25) 时间限制120 ms 内存限制65536 kB 代码长度限制16000 B The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th c

1097. Deduplication on a Linked List (25)【链表】——PAT (Advanced Level) Practise

题目信息 1097. Deduplication on a Linked List (25) 时间限制300 ms 内存限制65536 kB 代码长度限制16000 B Given a singly linked list L with integer keys, you are supposed to remove the nodes with duplicated absolute values of the keys. That is, for each value K, only the

PAT Advanced 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 sufix. For example, "loading" and "being" are stored

1094. The Largest Generation (25)【二叉树】——PAT (Advanced Level) Practise

题目信息 1094. The Largest Generation (25) 时间限制200 ms 内存限制65536 kB 代码长度限制16000 B A family hierarchy is usually presented by a pedigree tree where all the nodes on the same level belong to the same generation. Your task is to find the generation with the

1102. Invert a Binary Tree (25)【二叉树】——PAT (Advanced Level) Practise

题目信息 1102. Invert a Binary Tree (25) 时间限制400 ms 内存限制65536 kB 代码长度限制16000 B The following is from Max Howell @twitter: Google: 90% of our engineers use the software you wrote (Homebrew), but you can't invert a binary tree on a whiteboard so fuck off.

1106. Lowest Price in Supply Chain (25)【树+深搜】——PAT (Advanced Level) Practise

题目信息 1106. Lowest Price in Supply Chain (25) 时间限制200 ms 内存限制65536 kB 代码长度限制16000 B A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)– everyone involved in moving a product from supplier to customer. Starting from on

1066. Root of AVL Tree (25)【AVL树】——PAT (Advanced Level) Practise

题目信息 1066. Root of AVL Tree (25) 时间限制100 ms 内存限制65536 kB 代码长度限制16000 B An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child subtrees of any node differ by at most one; if at any time they differ by more tha

1067. Sort with Swap(0,*) (25)【贪心】——PAT (Advanced Level) Practise

题目信息 1067. Sort with Swap(0,*) (25) 时间限制150 ms 内存限制65536 kB 代码长度限制16000 B Given any permutation of the numbers {0, 1, 2,-, N-1}, it is easy to sort them in increasing order. But what if Swap(0, *) is the ONLY operation that is allowed to use? For exa

1016. Phone Bills (25)——PAT (Advanced Level) Practise

题目信息: 1016. Phone Bills (25) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue A long-distance telephone company charges its customers by the following rules: Making a long-distance call costs a certain amount per minute, depending