美文网首页
2020-04-08

2020-04-08

作者: joker_luo | 来源:发表于2020-04-08 20:56 被阅读0次

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.

fig.jpg

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

      
    

whereAddress 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
#include<iostream>
using namespace std;
typedef struct node{
    char data;
    int next;
    bool flag;
}node;
node list[100010];
int main(){
    int ad1,ad2,n;
    scanf("%d %d %d",&ad1,&ad2,&n);
    int address,nextaddress;
    char str;
    for(int i=0;i<n;++i){
        scanf("%d %c %d",&address,&str,&nextaddress);
        list[address].data = str;
        list[address].next = nextaddress;
    }
    for(int i=ad1;i!=-1;i=list[i].next){
        list[i].flag = true;
    }
//  while超时
//  while(list[ad1].next!=-1){
//      list[ad1].flag = true;
//      ad1 = list[ad1].next;
//  }
    for(int i=ad2;i!=-1;i=list[i].next){
        if(list[i].flag==true){
            printf("%05d",i);
            return 0;
        }
    }
    printf("-1");
//  while(list[ad2].flag!=true){
//      if(list[ad2].next==-1){
//          printf("-1");
//          return 0;
//      }
//      ad2 = list[ad2].next;
//  }
//  printf("%05d",ad2);
    return 0;
}

相关文章

  • 2020-04-08

    2020-04-08

  • 2020-04-09

    2020-04-08 菜菜_d868 字数 247 · 阅读 1 2020-04-08 23:12 姓名:邢彩颜 ...

  • 云数据库RDS

    2020-04-08 云数据库RDS RDS支持的引擎:MySQL、SqlServer、PostgreSQL、PP...

  • 意义

    很有用的日志建议收藏 专属浩与娴 关注 0.489 · 字数 2225 · 阅读 71 2020-04-08 12...

  • 云安全

    2020-04-08 云安全 IAAS(基础设施即服务):虚拟的服务器、存储、网络PAAS(平台服务):中间价、应...

  • 2020-04-09

    2020--04--08 2020-04-08 成长日志第295天 家名:温暖有爱之家 家规:真诚待人不自欺,学会...

  • 《高效演讲》2

    Day23 2020-04-08 《高效演讲》第10-15章 【字数】 从高效演讲延伸到沟通,人世离不开沟通。大多...

  • “武汉重启的背后,给了我太太太太太太多遗憾”

    图文版原文: “武汉重启的背后,给了我太太太太太太多遗憾” 今天2020-04-08,历时76天武汉终于解封了。但...

  • 20200408主动录音

    2020-04-08 星期三 多云 今天表扬一下自己(害羞),孩子没有按时完成作业,虽然急躁,但没有发火,而是等...

  • 云存储

    2020-04-08 云存储 相比机械硬盘,SSD(固态硬盘)的优点: 数据存取速度快:在密集的IO读写和低延迟方...

网友评论

      本文标题:2020-04-08

      本文链接:https://www.haomeiwen.com/subject/ylmxmhtx.html