之前做1052題的時候我默認所有節點都是有用的,結果錯了幾次才發現可能有多餘節點。這次一開始就注意了這個問題於是1A了,估計也有設置相同的陷阱
#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
typedef struct{
int addr;
int value;
int next;
}node;
int main(int argc, char const *argv[])
{
int id,n,k;
vector<node> lis;
map<int,pair<int,int>> input;
cin >> id >> n >> k;
for(int i=0; i<n; i++){
int addr,value,next;
cin >> addr >> value >> next;
input[addr] = pair<int,int>(value,next);
}
while(id!=-1){
node tmp;
tmp.addr = id;
tmp.value = input[id].first;
tmp.next = input[id].second;
lis.push_back(tmp);
id = input[id].second;
}
int left,right;
left = 0;
right = k;
while(right<=lis.size()){
reverse(lis.begin()+left,lis.begin()+right);
left = right;
right = left+k;
}
for(int i=0; i<lis.size(); i++){
printf("%05d %d ", lis[i].addr, lis[i].value);
if(i<lis.size()-1){
printf("%05d\n", lis[i+1].addr);
}
else{
cout << -1;
}
}
system("pause");
return 0;
}