总的来说,又是一道水题,开始考虑第三个重复出现就表示是结果,牛客网通过,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");
}
本文介绍了一种解决特定图遍历问题的方法,利用C++实现了一个简单的算法,该算法可以找出图中首次重复出现的节点,适用于带有环路的图结构。文中提供了一个具体的示例,展示了如何通过读取输入并构建图来找到这个重复节点。
1981

被折叠的 条评论
为什么被折叠?



