A1133
#include<iostream>
#include<vector>
using namespace std;
const int maxn=100010;
int data[maxn],next1[maxn];
int first,n,k;
int main()
{
cin >> first >> n >> k;
int temp1,temp2,temp3;
for(int i=0; i<n; i++)
{
cin >> temp1;
cin >> data[temp1] >> next1[temp1];
}
vector<int> a,b,c;
while(first!=-1)
{
if(data[first]<0)
{
a.push_back(first);
}
else if(data[first]<=k)
{
b.push_back(first);
}
else
c.push_back(first);
first=next1[first];
}
a.insert(a.end(),b.begin(),b.end());
a.insert(a.end(),c.begin(),c.end());
for(int i=0; i<a.size()-1; i++)
{
printf("%05d %d %05d\n",a[i],data[a[i]],a[i+1]);
}
printf("%05d %d -1\n",a[a.size()-1],data[a[a.size()-1]]);
return 0;
}
私はコードに納得していません:
#include<iostream>
#include<vector>
using namespace std;
const int maxn=100010;
int n,first,k;
struct node
{
int data;
int address;
int next;
}Node[maxn];
vector<node> Node1,Node2,Node3;
int main()
{
cin >> first >> n >> k;
int temp1;
for(int i=0; i<n; i++)
{
cin >> temp1;
cin >> Node[temp1].data >> Node[temp1].next;
Node[temp1].address=temp1;
}
while(first!=-1)
{
if(Node[first].data<0)
{
Node1.push_back(Node[first]);
}
else if(Node[first].data<=k)
{
Node2.push_back(Node[first]);
}
else
{
Node3.push_back(Node[first]);
}
first=Node[first].next;
}
Node1.insert(Node1.end(),Node2.begin(),Node2.end());
Node1.insert(Node1.end(),Node3.begin(),Node3.end());
for(int i=0; i<Node1.size()-1; i++)
{
printf("%05d %d %05d\n",Node1[i].address,Node1[i].data,Node1[i+1].address);
}
printf("%05d %d -1",Node1[Node1.size()-1].address,Node1[Node1.size()-1].data);
}