L2-002. 链表去重

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\n",x[i]);
36         printf("%05d %d ",x[i],a[x[i]].vul);
37     }
38     printf("-1\n");
39     if(k2){
40         printf("%05d %d ",y[0],a[y[0]].vul);
41         for(int i=1;i<k2;++i){
42             printf("%05d\n",y[i]);
43             printf("%05d %d ",y[i],a[y[i]].vul);
44         }
45         printf("-1\n");
46     }
47     return 0;
48 }

 

posted @ 2016-06-01 00:06  barriery  阅读(1349)  评论(0编辑  收藏  举报