zoukankan      html  css  js  c++  java
  • so easy(并查集+unordered_map)

    There are nn points in an array with index from 11 to nn, and there are two operations to those points.

    1: 1 x1 x marking the point xx is not available

    2: 2 x2 x query for the index of the first available point after that point (including xx itself) .

    Input

    nquad qnq

    z_1 quad x_1z1x1

    vdots

    z_qquad x_qzqxq

    qq is the number of queries, zz is the type of operations, and xx is the index of operations. 1≤x<n<10^91x<n<109, 1 leq q<10^61q<106 and zz is 11 or 22

    Output

    Output the answer for each query.

    样例输入

    5 3
    1 2
    2 2
    2 1

    样例输出

    3
    1




    #include <bits/stdc++.h>
    
    using namespace std;
    const int maxn = 1e5 + 100;
    unordered_map<int, int> fa;
    
    int findfa(int x) {
        if (!fa.count(x)) return x;
        return fa[x] = findfa(fa[x]);
    }
    
    
    int main() {
        int n, q;
        scanf("%d %d", &n, &q);
        int op, x;
        while (q--) {
            scanf("%d %d", &op, &x);
            if (op == 1) {
                fa[x] = findfa(x + 1);
            } else {
                int ans = findfa(x);
                if (ans > n) ans = -1;
                printf("%d
    ", ans);
            }
        }
        return 0;
    }



  • 相关阅读:
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之法阅读笔记03
    学习进度条
    软件工程练习——买书
    软件工程练习——找水王2
    Java作业07
    Java课堂作业06
    读《大道至简》第六章有感
    Java课堂作业05
  • 原文地址:https://www.cnblogs.com/wjc2021/p/11493050.html
Copyright © 2011-2022 走看看