第一次写了差一个点没过
没考虑有节点不在链表上不应该加入排序
最开始读题一脸迷茫,,这根本用不到 下一个指向谁啊
然后就没写(根本没用到这个数据)
然后就有一个点没过了,,
加入判断,通过
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int n, start;
struct stu{
int kai;
int key;
int end;
};
stu number[1000000], all[1000000];
bool cmp(stu a , stu b){
return a.key < b.key;
}
int main(){
scanf("%d%d",&n, &start);
for(int i=0; i<n; i++){
int a, b, c;
scanf("%d%d%d",&a,&b,&c);
all[a].kai = a;
all[a].key = b;
all[a].end = c;
}
int num = 0;
if(start == -1) {
printf("0 -1\n");
return 0;
}
while(start != -1){
number[num].kai = all[start].kai;
number[num].key = all[start].key;
number[num].end = all[start].end;
start = all[start].end;
num++;
}
sort(number,number+num,cmp);
printf("%d %05d\n",num,number[0].kai);
for(int j=0; j<num; j++){
if(j+1 != num)
printf("%05d %d %05d\n",number[j].kai,number[j].key,number[j+1].kai);
else printf("%05d %d -1\n",number[j].kai,number[j].key);
}
return 0;
}