1025. 反转链表 (25)

#include<iostream>
#include<map>
#include<vector>
#include<cstdio>
int main(void){
	using namespace std;
	map<int,int> m1;
	map<int,int> m2;
	int first_add;
	int n;
	int i;
	cin>>first_add>>n>>i;
	

	int nn=n;
	while(nn){
		int address;
		int num;
		int next_add;
		cin>>address>>num>>next_add;
		m1[address]=num;
		m2[address]=next_add;
		--nn;
	}
	vector<int> sort;
	sort.push_back(first_add);
	int temp=first_add;
	while(m2[temp]!=-1){
		sort.push_back(m2[temp]);
		temp=m2[temp];
	}
	int m=0;
	vector<int> sort_after;
	if(i){
	for(;m<=((int)sort.size())-i;m+=i){
		int ii=i-1;
		for(;ii>=0;--ii)
			sort_after.push_back(sort[m+ii]);
		}
	for(;m<sort.size();++m)
		sort_after.push_back(sort[m]);

	for(m=0;m<sort_after.size();++m){
		printf("%05d %d ",sort_after[m],m1[sort_after[m]]);
		//cout<<sort_after[m]<<' '<<m1[sort_after[m]]<<' ';
			if((m+1)!=sort_after.size())
				printf("%05d\n",sort_after[m+1]);
			//cout<<sort_after[m+1]<<endl;
		else
			cout<<"-1";
	}}
	else{
	for(m=0;m<sort.size();++m){
		printf("%05d %d ",sort[m],m1[sort[m]]);
		//cout<<sort[m]<<' '<<m1[sort[m]]<<' ';
		if((m+1)!=sort.size())
			printf("%05d\n",sort[m+1]);
			//cout<<sort[m+1]<<endl;
		else
			cout<<"-1";
	}	
	}

	return 0;
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值