第三个测试点提示段错误,求大佬给改进
#include<iostream>
#include<vector>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=100010;
struct node{
int add,data,next;
bool flag;
}_node[maxn];
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
for(int i=0;i<maxn;i++){
_node[i].flag=false;
}
int begin,n;
cin>>begin>>n;
for(int i=0;i<n;i++){
int _add,_data,_next;
cin>>_add>>_data>>_next;
_node[_add].add=_add;
_node[_add].data=_data;
_node[_add].next=_next;
}
int p=begin;
int count=0;
int temp[maxn]={};
while(p!=-1){
if(temp[(int)fabs(_node[p].data)]<1){
_node[p].flag=true;
temp[(int)fabs(_node[p].data)]++;
}
p=_node[p].next;
}
vector<node> vn,vnn;
int pp=begin;
while(pp!=-1){
if(_node[pp].flag){
vn.push_back(_node[pp]);
}else{
vnn.push_back(_node[pp]);
}
pp=_node[pp].next;
}
for(int i=0;i<vn.size()-1;i++){
vn[i].next=vn[i+1].add;
printf("%05d %d %05d\n",vn[i].add,vn[i].data,vn[i].next);
}
vn[vn.size()-1].next=-1;
printf("%05d %d -1\n",vn[vn.size()-1].add,vn[vn.size()-1].data);
for(int i=0;i<vnn.size()-1;i++){
vnn[i].next=vnn[i+1].add;
printf("%05d %d %05d\n",vnn[i].add,vnn[i].data,vnn[i].next);
}
vnn[vnn.size()-1].next=-1;
printf("%05d %d -1\n",vnn[vnn.size()-1].add,vnn[vnn.size()-1].data);
return 0;
}