1133 Splitting A Linked List (25 分) 测试点4 过不了
问题:测试点4过不了
原因:访问链表的时候采用了for循环,循环n次,不知道为什么会导致测试点四过不了。
解决:改成while循环 条件为判断没有到-1。
不知道为什么改了就过了
一开始以为是输出有问题,试了两种发现不是输出问题,下附代码
#include<iostream>
#include<vector>
using namespace std;
struct node{
int from,value,to;
};
node l[100010];
int main(){
int i,n,a,b,v,k,start;
vector<node> x,y,z;
int now;
scanf("%d%d%d",&start,&n,&k);
//scanf("%d%d",&n,&k);
for(i=0;i<n;i++){
scanf("%d%d%d",&a,&v,&b);
l[a]={a,v,b};
}
now=start;
while(now!=-1){ //for循环n次过不了第三个点
if(l[now].value>k){
x.push_back(l[now]);
}
else if(l[now].value<0){
y.push_back(l[now]);
}
else{
z.push_back(l[now]);
}
now=l[now].to;
}
for(i=0;i<z.size();i++){
y.push_back(z[i]);
}
for(i=0;i<x.size();i++){
y.push_back(x[i]);
}
for (int i = 0; i < y.size() - 1; i++)
printf("%05d %d %05d\n", y[i].from, y[i].value, y[i+1].from);
printf("%05d %d -1\n", y[y.size()-1].from, y[y.size()-1].value);
/* for(int i = 0; i < y.size()-1; i++){
cout << y[i].from<<" "<<y[i].value<<" "<<y[i+1].from<<endl;
}
cout << y[y.size()-1].from<<" "<<y[y.size()-1].value<<" "<<"-1"<<endl;
*/
/* if(y.size()!=0){
printf("%05d %d ",y[0].from,y[0].value);
}
else if(z.size()!=0){
printf("%05d %d ",z[0].from,z[0].value);
}
else if(x.size()!=0){
printf("%05d %d ",x[0].from,x[0].value);
}
for(i=1;i<y.size();i++){
printf("%05d\n%05d %d ",y[i].from,y[i].from,y[i].value);
}
if(y.size()==0&&z.size()!=0) {i=1;}
else {i=0;}
for(;i<z.size();i++){
printf("%05d\n%05d %d ",z[i].from,z[i].from,z[i].value);
}
if((y.size()==0)&&(z.size()==0)){i=1;}
else{i=0;}
for(;i<x.size();i++){
printf("%05d\n%05d %d ",x[i].from,x[i].from,x[i].value);
}
printf("-1");
*/
}