题目链接
- 牺牲空间换时间
- 用algorithm下的reverse可以简单的逆转数组中的位置顺序
using namespace std;
int llist[100010];
int node[100010][2];
int main()
{
int st,num,r;
scanf("%d %d %d",&st,&num,&r);
int address,data,next,i;
for(i=0;i<num;i++)
{
scanf("%d %d %d",&address,&data,&next);
node[address][0]=data;
node[address][1]=next;
}
int m=0,n=st;
while(n!=-1)
{
llist[m++]=n;
n=node[n][1];
}
i=0;
while(i+r<=m)
{
reverse(llist+i,llist+i+r);
i=i+r;
}
for (i = 0; i < m-1; i++)
{
printf("%05d %d %05d\n", llist[i], node[llist[i]][0], llist[i+1]);
}
printf("%05d %d -1\n", llist[i], node[llist[i]][0]);
return 0;
}