版权声明:听说这里让写版权声明~~~ https://blog.csdn.net/m0_37691414/article/details/86681216
题解
查找公共开始点,直接遍历一遍就可以知道啦。
#include<cstdio>
using namespace std;
const int MAXN = 1e6;
struct node {
char data;
int nextaddr;
bool flag;
}word[MAXN];
int a, b, n, addr, data, nextaddr;
int main() {
scanf("%d%d%d", &a, &b, &n);
for(int i = 0; i < n; ++i) {
scanf("%d%*c%c%d", &addr, &data, &nextaddr);
word[addr].data = data, word[addr].nextaddr = nextaddr;
}
while(a != -1) {
word[a].flag = true;
a = word[a].nextaddr;
}
while(b != -1) {
if(word[b].flag) {
printf("%05d", b);
break;
}
b = word[b].nextaddr;
}
if(b == -1) printf("-1");
return 0;
}