////////最后一个测试点还是不能过,不知道为什么。。。
#include<iostream>
#include<vector>
using namespace std;
struct node{
int data,next;
}list[1000000];
int main(){
int start,n,k,a,i;
scanf("%d%d%d",&start,&n,&k);
for(i=0;i<n;i++){
scanf("%d",&a);
scanf("%d%d",&list[a].data,&list[a].next);
}
int m,f=0;
if(n%k==0){
f=1;
m=n/k;
}else{
m=n/k+1;
}
if(start==-1){
printf("-1\n");
}else{
if(f==0){
vector<int> v[m];
int p=start;
i=0;
while(p!=-1&&i<m-1){
for(int j=0;j<k;j++){
v[i].push_back(p);
p=list[p].next;
}
i++;
}
while(p!=-1){
v[i].push_back(p);
p=list[p].next;
}
int flag=0;
for(i=0;i<m-1;i++){
for(int j=k-1;j>=0;j--){
if(flag==0){
printf("%05d %d ",v[i][j],list[v[i][j]].data );
flag=1;
}else{
printf("%05d\n%05d %d ",v[i][j],v[i][j],list[v[i][j]].data );
}
}
}
for(int j=0;j<v[m-1].size();j++){
printf("%05d\n%05d %d ",v[m-1][j],v[m-1][j],list[v[m-1][j]].data );
}
}
////////////////
if(f==1){
vector<int> v[m];
int p=start;
i=0;
while(p!=-1&&i<m){
for(int j=0;j<k;j++){
v[i].push_back(p);
p=list[p].next;
}
i++;
}
int flag=0;
for(i=0;i<m;i++){
for(int j=v[i].size()-1;j>=0;j--){
if(flag==0){
printf("%05d %d ",v[i][j],list[v[i][j]].data );
flag=1;
}else{
printf("%05d\n%05d %d ",v[i][j],v[i][j],list[v[i][j]].data );
}
}
}
}
printf("-1");
}
return 0;
}
相关文章
- 12-18PAT 甲级 1021 Deepest Root
- 12-18PAT A1115 Counting Nodes in a BST (30 分)——二叉搜索树,层序遍历或者dfs
- 12-187-19 PAT Judge(25 分)
- 12-181134 Vertex Cover-PAT甲级
- 12-18【PAT】A1134 Vertex Cover【图论】
- 12-18PAT A1134 Vertex Cover (25 分)
- 12-18PAT A1134 Vertex Cover (25 分) 图
- 12-18PAT乙级1075链表元素分类 25(分)
- 12-18PTA 乙级 1075 链表元素分类 (25 分)
- 12-18PAT Basic 1075 链表元素分类 (25 分)