题目描述
链表排序,写的很崩溃,因为数据上把struct给卡死了,重载<太慢,只能用数组一种方法了
不再允许用struct
C++ 代码
//数组模拟链表,快
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int e[N],ne[N],idx=0;
vector<pair<int,int>> res;
int main(){
int n,head;
cin>>n>>head;
for(int i=0;i<n;i++){
int addr,key,next;
cin>>addr>>key>>next;
e[addr]=key;
ne[addr]=next;
}
for(int i=head;i!=-1;i=ne[i]) res.push_back({e[i],i});
sort(res.begin(),res.end());
if(res.size()==0) cout<<0<<" "<<-1<<endl;
else{
//cout<<res.size()<<" "<<res[0].second<<endl;
printf("%d %05d\n",res.size(),res[0].second);
for(int i=0;i<res.size();i++){
if(i+1==res.size()) printf("%05d %d -1\n",res[i].second,res[i].first);
else printf("%05d %d %05d\n",res[i].second,res[i].first,res[i+1].second);
}
}
return 0;
}