首页 > 其他 > 详细

1097. Deduplication on a Linked List (25)

时间:2017-08-29 17:53:30      阅读:265      评论:0      收藏:0      [点我收藏+]

Linkedlist的题目,多给一个index,然后根据要求排序,经常会有奇效。。。大神的思路果然厉害。。。

#include<iostream>
#include<string>
#include<map>
#include<vector>
#include<algorithm>
#include<queue>
#include<set>
#include<stack>
using namespace std;
const int inf = 100001;

struct node {
    int val;
    int ad, next;
    int index=2*inf;
};

bool cmp1(node n1, node n2) {
    return n1.index < n2.index;
}

int main() {
    
    int root, num;
    cin >> root >> num;
    int r = root;
    node *arr = new node[100001];
    map<int, int> exist;
    for (int i = 0; i < num; i++) {
        int ad, val, next;
        cin >> ad >> val >> next;
        arr[ad].ad = ad;
        arr[ad].val = val;
        arr[ad].next = next;

    }
    int c1 = 0;
    int c2 = 0;
    for (int i = root; i !=-1; i=arr[i].next) {
        //cout << i << endl;
        if (exist[abs(arr[i].val)] == 0) {
            
            exist[abs(arr[i].val)] = 1;
            arr[i].index = c1;
            c1++;
        }

        else {
            arr[i].index = inf + c2;
            c2++;
        }

        
    }

    sort(arr, arr + inf, cmp1);
    int c = c1 + c2;
    for (int i = 0; i < c; i++) {
        if (i != c1 - 1 && i!=c-1)
            printf("%05d %d %05d\n", arr[i].ad, arr[i].val, arr[i + 1].ad);
        else
            printf("%05d %d -1\n", arr[i].ad, arr[i].val);
    }
    
    //int z = num - c;
    

    system("pause");
}

 

1097. Deduplication on a Linked List (25)

原文:http://www.cnblogs.com/wsggb123/p/7449409.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!