#include<stdio.h>
#include<algorithm>
using namespace std;
const int maxn = 100005;
struct Node{
int address, data, next;
bool flag;
}node[maxn];
bool cmp(Node a, Node b)
{
if(a.flag == false || b.flag == false) return a.flag > b.flag;
else return a.data < b.data;
}
int main()
{
for(int i = 0; i < maxn; i++)
{
node[i].flag = false;
}
int n, begin, address;
scanf("%d%d", &n, &begin);
for(int i = 0; i < n; i++)
{
scanf("%d", &address);
scanf("%d%d", &node[address].data , &node[address].next);
node[address].address = address;
}
int count = 0, p = begin;
while(p != -1)
{
node[p].flag = true;
count++;
p = node[p].next;
}
if(count == 0) printf("0 -1");
else{
sort(node, node + maxn, cmp);
printf("%d %05d\n", count, node[0].address);
for(int i = 0; i < count; i++)
{
if(i != count - 1)
printf("%05d %d %05d\n", node[i].address, node[i].data, node[i + 1].address);
else
printf("%05d %d -1\n", node[i].address, node[i].data);
}
}
return 0;
}
静态链表——sorting
猜你喜欢
转载自blog.csdn.net/tian__si/article/details/113880210
今日推荐
周排行