loading
being

Figure 1
i
Input Specification:
Address Data Next
whereAddress
Data
Next
Output Specification:
-1
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本以为,节点next出现两次,该节点就是公共节点,也包括-1在内,在牛客上测试通过,但在pat上测试失败,后来才感觉pat上可能出现公共节点在头结点上,故使用flag标记法,两条链表走过相同节点,则为公共节点
1 #include <iostream> 2 #include <unordered_map> 3 using namespace std; 4 int main() 5 { 6 int head1, head2, N, addr, next; 7 char c; 8 cin >> head1 >> head2 >> N; 9 unordered_map<int, pair<int, bool>>list; 10 for (int i = 0; i < N; ++i) 11 { 12 cin >> addr >> c >> next; 13 list[addr] = make_pair(next,false); 14 } 15 for (int i = head1; i != -1; i = list[i].first) 16 list[i].second = true; 17 for (int i = head2; i != -1; i = list[i].first) 18 { 19 if (list[i].second == true) 20 { 21 printf("%05d\n", i); 22 return 0; 23 } 24 } 25 printf("-1\n"); 26 return 0; 27 }