有两个测试点比较特殊。
第一个:可能是londing ing这种情况。
第二个:有一个字符串是空的。
#include <bits/stdc++.h>
using namespace std;
struct node {
char c;
int next;
}Node[100000];
vector<int> v1, v2;
int main() {
int fAd1, fAd2, n, ad, next;
char c;
scanf ("%d %d %d", &fAd1, &fAd2, &n);
for (int i = 0; i < n; i++) {
scanf ("%d %c %d", &ad, &c, &next);
Node[ad].c = c;
Node[ad].next = next;
}
while (fAd1 != -1) {
v1.push_back(fAd1);
fAd1 = Node[fAd1].next;
}
while (fAd2 != -1) {
v2.push_back(fAd2);
fAd2 = Node[fAd2].next;
}
reverse(v1.begin(), v1.end());
reverse(v2.begin(), v2.end());
if (v1.size() == 0 || v2.size() == 0) {
printf ("-1");
return 0;
}
for (int i = 0; i < v1.size() && i < v2.size(); i++) {
if (i == 0 && v1[i] != v2[i]) {
printf ("-1");
return 0;
}
else if (v1[i] != v2[i]) {
printf ("%05d", v1[i - 1]);
return 0;
}
}
printf ("%05d", v2[v2.size() - 1]);
}