1032. Sharing (25)

 距离PAT考试还有18天最重要的是做透每一题

(1)

思路:

用一个数组保存地址的下一地址

用另一个数组标记

 

注意点是while循环哪里是判断i!=-1  不是next[i]!=-1;

以及输出格式是五位的数不足补零

#include <cstdio>
#include <cstring>
using namespace std;

#define M 100001

int next1[M];
char flag[M];

int main() {
  int b1,b2;
  int n;

  memset(flag,0,sizeof(flag));
  memset(next1,0,sizeof(next1));
  scanf("%d %d %d",&b1,&b2,&n);
  for(int i=0;i<n;i++) {
    int ad1,next;
    char ch;
    scanf("%d %c %d",&ad1,&ch,&next);
  
    next1[ad1]=next;
  }

  int i=b1;
  while(i!=-1) {
    flag[i]=1;
    i=next1[i];
  }
  i=b2;
  while(i!=-1) {
    if(flag[i] == 1) {
      printf("%05d\n",i);
      return 0;
    }
    i=next1[i];
  }
  printf("%d\n",-1);
  return 0;
}

 

 

posted @ 2018-02-28 23:47  lan126  阅读(87)  评论(0编辑  收藏  举报