题目链接
实现
#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
struct node
{
int address;
int data;
int next;
};
int main()
{
int N, K,i,add,data, next, startAddress;
cin >> startAddress >> N >> K;
vector<node> nodes(100005),negative,smallerK, biggerK,all;
for (i = 0; i < N; i++)
{
cin >> add >> data >> next;
nodes[add].address = add;
nodes[add].data = data;
nodes[add].next = next;
}
int run = startAddress;
for (i = 0; i < N; i++)
{
if (nodes[run].data < 0)
negative.push_back(nodes[run]);
else if (nodes[run].data >= 0 && nodes[run].data <= K)
smallerK.push_back(nodes[run]);
else
biggerK.push_back(nodes[run]);
if (nodes[run].next == -1)
break;
run = nodes[run].next;
}
all = negative;
all.insert(all.end(), smallerK.begin(), smallerK.end());
all.insert(all.end(), biggerK.begin(), biggerK.end());
for (i = 0; i < all.size(); i++)
{
if (i < (all.size()-1))
printf("%05d %d %05d\n", all[i].address, all[i].data, all[i + 1].address);
else
printf("%05d %d -1\n", all[i].address, all[i].data);
}
return 0;
}