总结 这道题开始运行时老是错误,检查后发现是在输入地址和键值时,不应该在一条语句中。提交时发现卡在测试点三,应考虑链表无重复的情况。 代码
#include<bits/stdc++.h> using namespace std; struct p{ int vaule; int next; }s[100500]; int main(){ int add0,n,i,add; cin>>add0>>n; for(i=0;i<n;i++){ scanf("%d",&add); scanf("%d %d",&s[add].vaule,&s[add].next); } int a[100050]={0},t; int b1[100050],b2[100050],j=0,k=0; for(i=add0;i!=-1;i=s[i].next){ t=abs(s[i].vaule); if(a[t]==0){ a[t]=1; b1[j++]=i; } else b2[k++]=i; } if(j>0){ for(i=0;i<j-1;i++) printf("d %d d\n",b1[i],s[b1[i]].vaule,b1[i+1]); printf("d %d -1\n",b1[j-1],s[b1[j-1]].vaule); } if(k>1){ for(i=0;i<k-1;i++) printf("d %d d\n",b2[i],s[b2[i]].vaule,b2[i+1]); printf("d %d -1\n",b2[k-1],s[b2[k-1]].vaule); } }