按照y总算法基础课教的模板写的
由于idx只是记录当前存储了几个结点,指示当前结点地址(下标),而本地的输入中已经给出了地址,因此不需要idx。
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
const int N=100010;
typedef pair<int,int> PII;
vector<PII> link;
int e[N],ne[N],head;
int main(){
int n,head;
scanf("%d%d",&n,&head);
if(head==-1){
printf("0 -1\n");
return 0;
}
int add,key,next;
for(int i=0;i<n;i++){
scanf("%d%d%d",&add,&key,&next);
e[add]=key;
ne[add]=next;
}
for(int i=head;i!=-1;i=ne[i]){ //没有连起来的就不会加到link中
link.push_back({e[i],i});
}
sort(link.begin(),link.end()); //直接使用sort函数对链表中的元素进行排序
printf("%d %05d\n",link.size(),link[0].second);
for(int i=0;i<link.size();i++){
if(i==link.size()-1){
printf("%05d %d -1\n",link[i].second,link[i].first);
}
else{
printf("%05d %d %05d\n",link[i].second,link[i].first,link[i+1].second);
}
}
return 0;
}