一开始不知道scanf(“%d”,&a)读带有前导零的可以将前面的0自动滤去,而且也不知道printf(“%05d”)的含义,表示的是以五个字符的格式输出,不足5个的用0补充。开始用的是map做的,结果最后一个测试样例超时。其实这样构造的是一个静态链表。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Node{
int next;
char ch;
};
Node node[100005];
int vis[100005];
int main(){
int start1,start2,N,a,b;
char c;
scanf("%d%d%d",&start1,&start2,&N);
memset(vis,0,sizeof(vis));
for(int i=0;i<N;i++){
scanf("%d %c %d",&a,&c,&b);
node[a].ch=c;
node[a].next=b;
}
while(start1!=-1){
vis[start1]=1;
start1=node[start1].next;
}
bool flag=false;
int ans;
while(start2!=-1){
if(vis[start2]==1){
flag=true;
ans=start2;
break;
}
start2=node[start2].next;
}
if(flag)
printf("%05d\n",ans);
else
printf("-1\n");
//system("pause");
return 0;
}