PAT甲级――A1032 Sharing

匿名 (未验证) 提交于 2019-12-02 23:49:02

loadingbeing

Figure 1

i

Input Specification:

Address Data Next 

whereAddressDataNext

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 }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!