• 【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 }
    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    利用shell脚本实现免密认证
    利用shell脚本实现https证书认证
    高级sed命令
    Zabbix自定义监控
    Zabbix三种邮箱告警配置
    Zabbix配置
    监控服务Zabbix部署
    Ftp
    Samba
    NFS
  • 原文地址:https://www.cnblogs.com/ldudxy/p/11963843.html
Copyright © 2020-2023  润新知