1052. Linked List Sorting

아 이 템 과 아 이 템 이 없 는 케이스 를 조심 하 세 요.
#include<deque>
#include<algorithm>
using namespace std;
const int N=100005;
struct node
{
    int addr,data,next;
    node(int a,int b,int c):addr(a),data(b),next(c){}
    bool operator<(const node&x)const{return data<x.data;}
};
node *so[N];
deque<node>sr;
int main()
{
    int n,start;
    scanf("%d%d",&n,&start);
    for(int a,b,c,i=0;i<n;++i)
    {
        scanf("%d%d%d",&a,&b,&c);
        so[a]=new node(a,b,c);
    }
    if(start!=-1)
        do sr.push_back(*so[start]);
             while((start=so[start]->next)!=-1);
    if(sr.empty())
        printf("0 -1");
    else
    {
        sort(sr.begin(),sr.end());
        printf("%d %05d
",sr.size(),sr[0].addr); int i; for(i=0;i<sr.size();++i) { printf("%05d %d",sr[i].addr,sr[i].data); if(i==(sr.size()-1)) printf(" -1
"); else printf(" %05d
",sr[i+1].addr); } } return 0; }

좋은 웹페이지 즐겨찾기