总的来说,又是一道水题,开始考虑第三个重复出现就表示是结果,牛客网通过,PAT出错,可能是因为给的有多余的字符,之后在写了个如下的
#include<iostream>
#include<vector>
using namespace std;
#pragma warning(disable:4996)
int main()
{
int visited[100000] = { 0 };
vector<int> vec[100000];
int s1, s2, N;
cin >> s1 >> s2 >> N;
for (int t = 0;t < N;t++)
{
int t1, t2;
char c;
scanf("%d %c %d", &t1, &c, &t2);
vec[t1].push_back(t2);
}
while (s1 != -1)
{
visited[s1] = 1;
visited[vec[s1].back()] = 1;
s1 = vec[s1].back();
}
while (s2 != -1)
{
if (visited[s2] == 1) break;
s2 = vec[s2].back();
}
if(s2!=-1) printf("%05d\n", s2);
else printf("-1\n");
}