1032 Sharing (25分)测试点3运行超时

原因是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);
}

猜你喜欢

转载自blog.csdn.net/qq_42835526/article/details/113316434