AcWing 1516. 共享
原题链接
简单
作者:
eveer
,
2021-08-26 15:02:46
,
所有人可见
,
阅读 359
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int ne[N];//ne[i]存储的是i这个节点的下一个点
bool is_a[N];//判断a字母遍历了哪些节点
int main()
{
int abegin,bbegin,n;//abegin表示字母a的起始下标,bbegin表示字母b的起始下标,n表示节点的数量
scanf("%d%d%d",&abegin,&bbegin,&n);
while(n--)
{
int from,to;
char op[2];
scanf("%d%s%d",&from,&op,&to);
ne[from]=to;
}
int i;
for(i=abegin;i!=-1;i=ne[i])
is_a[i]=true;
//从前往后遍历字母b,如果出现相同的节点,则表明两个字母存在相等的部分
for(int i=bbegin;i!=-1;i=ne[i])
{
if(is_a[i]==true)//如果i这个点在a中出现过,则输出i
{
printf("%05d",i);//需要注意结果输出要保证格式
return 0;
}
}
printf("-1");
return 0;
}