超级无敌霹雳水的一道题,时间复杂度O(n)可解
坑点:输出时要判断一下,可能不足五位数,需要你补齐这五位!
#include <bits/stdc++.h>
using namespace std;
struct node
{
char c;
int next;
bool flag;
};
node nd[100010];
int main(void)
{
int n,n1,n2,k;
scanf("%d%d%d",&n1,&n2,&n);
for(int i=0;i<n;i++)
{
scanf("%d",&k);
getchar();
scanf("%c",&nd[k].c);
getchar();
scanf("%d",&nd[k].next);
nd[k].flag=false;
}
k=-1;
while(n1!=-1)
{
nd[n1].flag=true;
n1=nd[n1].next;
}
while(n2!=-1)
{
if(nd[n2].flag)
{
k=n2;break;
}
n2=nd[n2].next;
}
if(k==-1)
printf("%d",k);
else
printf("%05d",k);
}