#define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> using namespace std; struct Node { char data; int next; }node[100005]; int main() { int head1, head2, n; cin >> head1 >> head2 >> n; if (head1 == -1 || head2 == -1) // 这个1分测试点太贱了,快把人搞崩溃 { printf("-1\n"); return 0; } int cur_addr; char data; int next; for (int i = 0; i < n; i++) { scanf("%d %c %d", &cur_addr, &data, &next); // cin >> cur_addr >> data >> next; node[cur_addr].data = data; node[cur_addr].next = next; } int p1 = head1, p2 = head2; int len1 = 0, len2 = 0; while (p1 != -1) { len1++; p1 = node[p1].next; } while (p2 != -1) { len2++; p2 = node[p2].next; } p1 = head1, p2 = head2; int diff; if (len1 > len2) { diff = len1 - len2; while (diff--) p1 = node[p1].next; } else if (len1 < len2) { diff = len2 - len1; while (diff--) p2 = node[p2].next; } if (p1 == p2) printf("%05d\n", p1); else { int next1 = node[p1].next; int next2 = node[p2].next; while (next1 != next2) { p1 = next1; next1 = node[p1].next; p2 = next2; next2 = node[p2].next; } if (next1 == -1) { if (p1 == p2) printf("%05d\n", p1); else printf("-1\n"); } else printf("%05d\n", next1); } return 0; }