PAT甲级1097 Deduplication on a Linked List (25 分)

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT甲级1097 Deduplication on a Linked List (25 分)相关的知识,希望对你有一定的参考价值。

题意:

输入一个地址和一个正整数N(<=100000),接着输入N行每行包括一个五位数的地址和一个结点的值以及下一个结点的地址。输出除去具有相同绝对值的结点的链表以及被除去的链表(由被除去的结点组成的链表)。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int nex[100007],val[100007];
 5 vector<pair<int,int> >ans,ans2;
 6 int vis[100007];
 7 int main(){
 8     //ios::sync_with_stdio(false);
 9     //cin.tie(NULL);
10     //cout.tie(NULL);
11     int s,n;
12     cin>>s>>n;
13     for(int i=1;i<=n;++i){
14         int x,y,z;
15         cin>>x>>y>>z;
16         nex[x]=z;
17         val[x]=y;
18     }
19     while(s!=-1){
20         if(vis[abs(val[s])]){
21             ans2.push_back({s,val[s]});
22             s=nex[s];
23             continue;
24         }
25         ans.push_back({s,val[s]});
26         vis[abs(val[s])]=1;
27         s=nex[s];
28     }
29     for(int i=0;i<ans.size();++i){
30         printf("%05d %d ",ans[i].first,ans[i].second);
31         if(i<ans.size()-1)
32             printf("%05d
",ans[i+1].first);
33         else
34             printf("-1
");
35     }
36     for(int i=0;i<ans2.size();++i){
37         printf("%05d %d ",ans2[i].first,ans2[i].second);
38         if(i<ans2.size()-1)
39             printf("%05d
",ans2[i+1].first);
40         else
41             printf("-1
");
42     }
43     return 0;
44 }

 

以上是关于PAT甲级1097 Deduplication on a Linked List (25 分)的主要内容,如果未能解决你的问题,请参考以下文章

PAT甲级题解-1097. Deduplication on a Linked List (25)-链表的删除操作

1097. Deduplication on a Linked List (25)链表——PAT (Advanced Level) Practise

1097. Deduplication on a Linked List (25)链表——PAT (Advanced Level) Practise

PAT1097:Deduplication on a Linked List

PAT 1097. Deduplication on a Linked List (链表)

PAT Advanced 1097 Deduplication on a Linked List (25) [链表]