题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805262953594880
代码
#include<cstdio>#include<algorithm>using namespace std;const int maxn = 100010;struct Node{int add, data, next;int level, seq;bool flag;}node[maxn];bool cmp(Node a, Node b){if(a.flag == false || b.flag == false) return a.flag > b.flag;else if(a.level != b.level) return a.level < b.level;else return a.seq < b.seq;}int main(){for(int i = 0; i < maxn; i++){node[i].flag = false;}int frist, n, k;scanf("%d%d%d", &frist, &n, &k);int temp_add;for(int i = 0; i < n; i++){scanf("%d", &temp_add);node[temp_add].add = temp_add;scanf("%d%d", &node[temp_add].data, &node[temp_add].next);if(node[temp_add].data < 0) node[temp_add].level = 1;else if(node[temp_add].data <= k) node[temp_add].level = 2;else node[temp_add].level = 3;}int p = frist, count = 0;while(p != -1){node[p].flag = true;node[p].seq = count;p = node[p].next;count++;}sort(node, node + maxn, cmp);for(int i = 0; i < count; i++){printf("%05d %d ", node[i].add, node[i].data);if(i != count - 1) printf("%05d\n", node[i + 1].add);else printf("-1\n");}}
