//1052. Linked List Sorting (25)
//第三个case测试:输出格式是否为05d,尤其是输出起始节点。
//最后一个case是测试当链表node数量为0时,是否输出正确结果。这个时候不是直接return 0就可以。
#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <functional>
using namespace std;
typedef struct
{
int num;
int address;
}Nm;
bool cmp(Nm n1, Nm n2)
{
return n1.num < n2.num;
}
int main(void)
{
#ifdef ONLINE_JUDGE
#else
freopen("D:\\1.txt", "r", stdin);
freopen("D:\\2.txt", "w", stdout);
#endif
int N;
int head;
int NextArr[100005];
int Number[100005];
fill(NextArr, NextArr+100005, -1);
scanf("%d %d", &N, &head);
int i;
vector<Nm> Result;
int start, num, next;
for (i = 0;i<N;i++)
{
scanf("%d %d %d", &start, &num, &next);
NextArr[start] = next;
Number[start] = num;
}
int tmp = head;
while (tmp!=-1)
{
Nm t;
t.address = tmp;
t.num = Number[tmp];
Result.push_back(t);
tmp = NextArr[tmp];
}
sort(Result.begin(), Result.end(), cmp);
if (Result.size() == 0)
{
printf("0 -1\n"); //注意当为0个节点时候仍要输出!!!
return 0;
}
printf("%d %05d\n", Result.size(), Result[0].address);
for (i = 1;i<Result.size();i++)
{
printf("%05d %d %05d\n", Result[i-1].address, Result[i-1].num, Result[i].address);
}
i = Result.size() - 1;
printf("%05d %d -1", Result[i].address, Result[i].num);
return 0;
}
PAT 1052. Linked List Sorting (25)
最新推荐文章于 2021-09-17 19:52:06 发布