思路
照常输入,然后先遍历第一个链表,且将第一个链表的结点都的属性设置为访问过vis=true;再从第二条链表的开头开始遍历,遇到第一个vis=true的结点node则输出node.val,返回
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
struct node {
int next=-1, vis;
} A[N];
int main() {
std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int s1,s2,n,addr,next;; cin>>s1>>s2>>n;
char val;
for (int i=0; i<n; i++) {
cin>>addr>>val>>next;
A[addr]={next, false};
}
for (int i=s1; i!=-1; i=A[i].next) A[i].vis=1;
for (int i=s2; i!=-1; i=A[i].next) if (A[i].vis) {
return printf("%05d", i), 0;
}
printf("-1");
return 0;
}
原文:https://www.cnblogs.com/wdt1/p/13726800.html