测试点2过不去,回头看
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn=100010;
struct node{
int address;
int data;
int next;
bool flag;
}list[maxn];
vector<int>ans;
int main()
{
int begin,n;
int address,next;
int data;
int count=0;
for(int i=0;i<maxn;i++)
list[i].flag=false;
scanf("%d%d",&begin,&n);
for(int i=0;i<n;i++)
{
scanf("%d %d %d",&address,&data,&next);
list[address].address=address;
list[address].data=data;
list[address].next=next;
}
next=begin;
while(next!=-1)
{
vector<int>::iterator it=find(ans.begin(),ans.end(),abs(list[next].data));
if(it==ans.end())
{
ans.push_back(abs(list[next].data));
list[next].flag=true;
}
next=list[next].next;
}
next=begin;
int countt=0;
while(next!=-1)
{
if(list[next].flag==true)
{
if(countt==0)
{
printf("%05d %d ",list[next].address,list[next].data);
countt++;
}
else
{
printf("%05d\n",list[next].address);
printf("%05d %d ",list[next].address,list[next].data);
}
}
next=list[next].next;
}
if(countt==0)
cout<<"0 -1\n";
else
printf("-1\n");
next=begin;
countt=0;
while(next!=-1)
{
if(list[next].flag==false)
{
if(countt==0)
{
printf("%05d %d ",list[next].address,list[next].data);
countt++;
}
else
{
printf("%05d\n",list[next].address);
printf("%05d %d ",list[next].address,list[next].data);
}
}
next=list[next].next;
}
if(countt==0)
cout<<"0 -1\n";
else
printf("-1\n");
return 0;
}