L2-002. 链表去重
题目链接:https://www.patest.cn/contests/gplt/L2-002
代码如下:
1 #include<cstdio> 2 #include<cstring> 3 #include<cstring> 4 #include<stack> 5 #include<cmath> 6 #define MAX_N 100000 7 using namespace std; 8 struct TYPE{ 9 int vul,next; 10 }; 11 TYPE a[MAX_N+1]; 12 int x[MAX_N+1],y[MAX_N+1]; 13 bool compare[MAX_N+1]; 14 int main(void){ 15 //freopen("in.txt","r",stdin); 16 int adress,n; 17 scanf("%d%d",&adress,&n); 18 for(int i=0;i<n;++i){ 19 int temp; 20 scanf("%d",&temp); 21 scanf("%d%d",&a[temp].vul,&a[temp].next); 22 } 23 int k1=0,k2=0; 24 for(int i=adress;i!=-1;i=a[i].next){ 25 int temp=abs(a[i].vul); 26 if(compare[temp]==false){ 27 x[k1++]=i; 28 compare[temp]=true; 29 }else{ 30 y[k2++]=i; 31 } 32 } 33 printf("%05d %d ",x[0],a[x[0]].vul); 34 for(int i=1;i<k1;++i){ 35 printf("%05d ",x[i]); 36 printf("%05d %d ",x[i],a[x[i]].vul); 37 } 38 printf("-1 "); 39 if(k2){ 40 printf("%05d %d ",y[0],a[y[0]].vul); 41 for(int i=1;i<k2;++i){ 42 printf("%05d ",y[i]); 43 printf("%05d %d ",y[i],a[y[i]].vul); 44 } 45 printf("-1 "); 46 } 47 return 0; 48 }