Submission #8266997


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

struct UnionFind {
    vector<int> par;
    vector<int> sz;

    UnionFind(int n=0){
        if(n>0) initialize(n);
    }

    void initialize(int n){
        par.resize(n);
        sz.resize(n);
        for(int i=0; i<n; i++){
            par[i] = i;
            sz[i] = 1;
        }
    }

    int find(int x){
        if(par[x] == x){
            return x;
        }else{
            return par[x] = find(par[x]);
        }
    }

    bool unite(int x, int y){
        x = find(x);
        y = find(y);
        if(x == y) return false;
        if(sz[x] > sz[y]) swap(x, y);
        par[x] = y;
        sz[y] += sz[x];
        return true;
    }

    bool same(int x, int y){
        return find(x) == find(y);
    }

    int size(int x){
        return sz[find(x)];
    }
};

int main(){
    int N, M, K;
    cin >> N >> M >> K;
    vector<vector<int>> es(M);
    for(int i=0; i<M; i++){
        int a, b, c;
        scanf("%d %d %d", &a, &b, &c);
        es[i] = {c, a-1, b-1, i};
    }
    sort(es.rbegin(), es.rend());

    // 出力しやすいように子供は1-indexedで扱っている
    vector<int> ans(M, 0);
    vector<UnionFind> uf(K+1, N);

    for(auto& e : es){
        int a = e[1], b = e[2], i = e[3];
        // ok側が(a, b)非連結、ng側が既に連結
        int ok = K+1, ng = 0;
        while(ok-ng>1){
            int mid = (ok+ng)/2;
            (uf[mid].same(a, b) ? ng : ok) = mid;
        }
        if(ok != K+1){
            uf[ok].unite(a, b);
            ans[i] = ok;
        }
    }
    for(int a : ans) printf("%d\n", a);
    return 0;
}

Submission Info

Submission Time
Task K - 遺産相続
User betrue12
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1706 Byte
Status AC
Exec Time 337 ms
Memory 98048 KiB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:54:38: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d %d %d", &a, &b, &c);
                                      ^

Judge Result

Set Name Subtask01 Subtask02
Score / Max Score 15 / 15 85 / 85
Status
AC × 19
AC × 48
Set Name Test Cases
Subtask01 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt
Subtask02 sample-01.txt, sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 02-01.txt, 02-02.txt, 02-03.txt, 02-04.txt, 02-05.txt, 02-06.txt, 02-07.txt, 02-08.txt, 02-09.txt, 02-10.txt, 02-11.txt, 02-12.txt, 02-13.txt, 02-14.txt, 02-15.txt, 02-16.txt, 02-17.txt, 02-18.txt, 02-19.txt, 02-20.txt, 02-21.txt, 02-22.txt, 02-23.txt, 02-24.txt, 02-25.txt, 02-26.txt, 02-27.txt, 02-28.txt, 02-29.txt
Case Name Status Exec Time Memory
01-01.txt AC 1 ms 256 KiB
01-02.txt AC 200 ms 18432 KiB
01-03.txt AC 223 ms 18432 KiB
01-04.txt AC 243 ms 18560 KiB
01-05.txt AC 19 ms 2176 KiB
01-06.txt AC 3 ms 512 KiB
01-07.txt AC 1 ms 384 KiB
01-08.txt AC 209 ms 18560 KiB
01-09.txt AC 242 ms 18560 KiB
01-10.txt AC 143 ms 18560 KiB
01-11.txt AC 142 ms 18560 KiB
01-12.txt AC 141 ms 18560 KiB
01-13.txt AC 148 ms 18560 KiB
01-14.txt AC 140 ms 18432 KiB
01-15.txt AC 139 ms 18432 KiB
01-16.txt AC 141 ms 18560 KiB
01-17.txt AC 140 ms 18560 KiB
02-01.txt AC 9 ms 1920 KiB
02-02.txt AC 270 ms 20096 KiB
02-03.txt AC 254 ms 27776 KiB
02-04.txt AC 300 ms 97792 KiB
02-05.txt AC 66 ms 81024 KiB
02-06.txt AC 47 ms 79360 KiB
02-07.txt AC 45 ms 79232 KiB
02-08.txt AC 337 ms 97792 KiB
02-09.txt AC 334 ms 97792 KiB
02-10.txt AC 224 ms 97792 KiB
02-11.txt AC 225 ms 97792 KiB
02-12.txt AC 224 ms 97792 KiB
02-13.txt AC 255 ms 22144 KiB
02-14.txt AC 285 ms 22144 KiB
02-15.txt AC 261 ms 22144 KiB
02-16.txt AC 183 ms 22144 KiB
02-17.txt AC 182 ms 22144 KiB
02-18.txt AC 182 ms 22144 KiB
02-19.txt AC 224 ms 97408 KiB
02-20.txt AC 216 ms 27648 KiB
02-21.txt AC 203 ms 27648 KiB
02-22.txt AC 226 ms 43392 KiB
02-23.txt AC 218 ms 43392 KiB
02-24.txt AC 252 ms 98048 KiB
02-25.txt AC 250 ms 98048 KiB
02-26.txt AC 248 ms 98048 KiB
02-27.txt AC 225 ms 97920 KiB
02-28.txt AC 225 ms 97920 KiB
02-29.txt AC 225 ms 97920 KiB
sample-01.txt AC 1 ms 256 KiB
sample-02.txt AC 1 ms 256 KiB