PAT A 1097. Deduplication on a Linked List (25)

来源:互联网 发布:adblock plus mac 编辑:程序博客网 时间:2024/06/03 19:39

给出的结点可能会有多余的无用结点。

#include <cstdio>#include <vector>#include <set>#include <cmath>using namespace std;struct node{int addr,key,next;node()=default;void assign(const int &x,const int &k,const int &y){addr=x,key=k,next=y;}};vector<node> v[2];set<int> appeared;node link[100000];int main(void){//freopen("in.log","r",stdin);int front,n;scanf("%d%d",&front,&n);for(int i=0;i<n;++i){int x,k,y;scanf("%d%d%d",&x,&k,&y);link[x].assign(x,k,y);}while(front!=-1){int tmpk=fabs(link[front].key);if(!appeared.count(tmpk)){appeared.insert(tmpk);v[0].push_back(link[front]);}else {v[1].push_back(link[front]);}front=link[front].next;}int i=0,j=0;if(!v[0].empty()){for(node c:v[0]){(i++)?printf("%05d\n%05d %d ",c.addr,c.addr,c.key):printf("%05d %d ",c.addr,c.key);}printf("-1\n");}if(!v[1].empty()){for(node c:v[1]){(j++)?printf("%05d\n%05d %d ",c.addr,c.addr,c.key):printf("%05d %d ",c.addr,c.key);}printf("-1\n");}return 0;}

原创粉丝点击