Submission #3426571


Source Code Expand

#include <cmath>
#include <iostream>
#include <vector>
#include <queue>
#include <deque>
#include <map>
#include <set>
#include <stack>
#include <tuple>
#include <bitset>
#include <algorithm>
#include <functional>
#include <utility>
#include <iomanip>

#define int long long int
#define rep(i, n) for(int i = 0; i < (n); ++i)

using namespace std;

typedef pair<int, int> P;

const int INF = 1e15;
const int MOD = 1e9+7;

template <typename T>
class union_find{
    private:
        int n;
        vector<T> p, rank, time;
        int now;

    public:
        union_find(int n)
            : n(n), p(n+1, -1), rank(n+1), time(n+1, INF), now(0) {}

        int find(int v, int t){
            if(time[v] > t){
                return v;
            }

            return find(p[v], t);
        }

        int unite(int u, int v){
            ++now;
            int u_root = find(u, now);
            int v_root = find(v, now);

            if(u_root == v_root){
                return now;
            }

            if(rank[u_root] < rank[v_root]){
                swap(u_root, v_root);
            }

            if(rank[u_root] == rank[v_root]){
                rank[u]++;
            }

            p[v_root] = u_root;
            time[v] = now;
            return now;
        }
};

signed main(){
    int n, m;
    cin >> n >> m;

    union_find<int> uf(n);
    rep(i, m){
        int a, b;
        cin >> a >> b;
        uf.unite(a, b);
    }

    int q;
    cin >> q;
    rep(i, q){
        int x, y;
        cin >> x >> y;

        int lo = -1;
        int hi = m + 1;
        while(hi - lo > 1){
            int mid = (lo + hi) / 2;
            int px = uf.find(x, mid);
            int py = uf.find(y, mid);

            if(px == py){
                hi = mid;
            }else{
                lo = mid;
            }
        }

        if(hi == m + 1){
            cout << -1 << endl;
        }else{
            cout << hi << endl;
        }
    }


    return 0;
}

Submission Info

Submission Time
Task H - Union Sets
User amanuko
Language C++14 (Clang 3.8.0)
Score 0
Code Size 2087 Byte
Status RE
Exec Time 587 ms
Memory 3200 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 600
Status
AC × 3
AC × 34
WA × 14
RE × 1
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_2.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_3.txt, subtask_1_30.txt, subtask_1_31.txt, subtask_1_32.txt, subtask_1_33.txt, subtask_1_34.txt, subtask_1_35.txt, subtask_1_36.txt, subtask_1_37.txt, subtask_1_38.txt, subtask_1_39.txt, subtask_1_4.txt, subtask_1_40.txt, subtask_1_41.txt, subtask_1_42.txt, subtask_1_43.txt, subtask_1_44.txt, subtask_1_45.txt, subtask_1_46.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask_1_1.txt AC 1 ms 256 KB
subtask_1_10.txt WA 68 ms 256 KB
subtask_1_11.txt RE 122 ms 256 KB
subtask_1_12.txt AC 5 ms 1408 KB
subtask_1_13.txt WA 9 ms 256 KB
subtask_1_14.txt AC 2 ms 256 KB
subtask_1_15.txt WA 104 ms 384 KB
subtask_1_16.txt WA 10 ms 256 KB
subtask_1_17.txt WA 28 ms 256 KB
subtask_1_18.txt WA 2 ms 256 KB
subtask_1_19.txt AC 14 ms 1152 KB
subtask_1_2.txt AC 1 ms 256 KB
subtask_1_20.txt WA 2 ms 256 KB
subtask_1_21.txt WA 17 ms 256 KB
subtask_1_22.txt AC 3 ms 896 KB
subtask_1_23.txt AC 376 ms 2944 KB
subtask_1_24.txt AC 384 ms 2944 KB
subtask_1_25.txt AC 403 ms 2944 KB
subtask_1_26.txt WA 395 ms 2944 KB
subtask_1_27.txt WA 563 ms 3200 KB
subtask_1_28.txt WA 561 ms 3200 KB
subtask_1_29.txt AC 375 ms 2944 KB
subtask_1_3.txt AC 1 ms 256 KB
subtask_1_30.txt AC 379 ms 2944 KB
subtask_1_31.txt AC 390 ms 2944 KB
subtask_1_32.txt WA 401 ms 2944 KB
subtask_1_33.txt WA 576 ms 3200 KB
subtask_1_34.txt WA 560 ms 3200 KB
subtask_1_35.txt AC 383 ms 2944 KB
subtask_1_36.txt AC 390 ms 2944 KB
subtask_1_37.txt AC 399 ms 2944 KB
subtask_1_38.txt AC 419 ms 2944 KB
subtask_1_39.txt AC 531 ms 3200 KB
subtask_1_4.txt AC 17 ms 1920 KB
subtask_1_40.txt AC 533 ms 3200 KB
subtask_1_41.txt AC 323 ms 512 KB
subtask_1_42.txt AC 331 ms 512 KB
subtask_1_43.txt AC 537 ms 2432 KB
subtask_1_44.txt AC 587 ms 3200 KB
subtask_1_45.txt AC 314 ms 512 KB
subtask_1_46.txt AC 417 ms 2944 KB
subtask_1_5.txt AC 59 ms 256 KB
subtask_1_6.txt AC 5 ms 1408 KB
subtask_1_7.txt AC 1 ms 384 KB
subtask_1_8.txt AC 1 ms 512 KB
subtask_1_9.txt AC 64 ms 512 KB