原因是for循环中应该是p!=-1;否则还没到最后一个节点就结束了,但这也应该是答案错误呀?比如第一个公共节点是最后那个节点,结果就会输出-1。
不会是死循环吧?f[p].next!=-1肯定会结束,不管什么错,还是先认认真真读一遍代码吧
①%05d是按五位数输出整数
#include<iostream>
using namespace std;
struct node{
char data;
int next;
bool flag=false;
}f[100010];
int main()
{
int m,n,q;
cin>>m>>n>>q;
for(int i=0;i<q;i++)
{
int l;
cin>>l;
cin>>f[l].data>>f[l].next;
}
int p;
for(p=m;f[p].next!=-1;p=f[p].next)
{
f[p].flag=true;
}
for(p=n;f[p].next!=-1;p=f[p].next)
{
if(f[p].flag==true) break;
}
if(f[p].next==-1)
cout<<"-1";
else
printf("%05d",p);
}