#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <stack>
#include <queue>
using namespace std;
const int maxn = 100010;
struct Node
{
int pos;
int data;
int next;
int xxx;
}node[maxn];
bool cmp(Node a,Node b)
{
if(a.xxx == -1 || b.xxx == -1)
return a.xxx > b.xxx;
else
return a.data < b.data;
}
int main()
{
// freopen("in.txt","r",stdin);
int s1,n,countn = 0,m=9999;
scanf("%d%d",&n,&s1);
for(int i = 0;i<maxn;i++)
node[i].xxx = -1;
for(int i = 0;i<n;i++)
{
int p1,p2;
int l;
scanf("%d %d %d",&p1,&l,&p2);
node[p1].pos = p1;
node[p1].data = l;
node[p1].next = p2;
}
int head = s1;
while(head!=-1)
{
node[head].xxx = 1;
countn++;
head = node[head].next;
}
if(countn == 0)
printf("0 -1");
else
{
sort(node,node+maxn,cmp);
printf("%d %05d\n",countn,node[0].pos);
for(int i = 0;i<countn;i++)
{
if(i!=countn - 1)
printf("%05d %d %05d\n",node[i].pos,node[i].data,node[i+1].pos);
else
printf("%05d %d -1\n",node[i].pos,node[i].data);
}
}
}
7.3 1052 Linked List Sorting (25 分)(**)
最新推荐文章于 2019-08-16 11:24:17 发布