提出 #45058376


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
class UnionFind{
    public:
        int par[100009];
        int siz[100009];
        int rank[100009];
        void init(int n){
            for (int i = 0; i < n; i++){
                par[i] = -1;
                rank[i] = -1;
                siz[i] = -1;
            }
        }
        int root(int x){
            if (par[x] == -1){
                return x;
            }
            else {
                par[x] = root(par[x]);
                return par[x];
            }
        }
        bool same(int x, int y){
            return root(x) == root(y);
        }
        bool unite(int x, int y){
            int rx = root(x);
            int ry = root(y);
            if (rx == ry){
                return false;
            }
            if (rank[rx] < rank[ry]){
                swap(rx, ry);
            }
            par[ry] = rx;
            if (rank[rx] == rank[ry]){
                rank[rx] ++;
            }
            siz[rx] += siz[ry];
            return true;
        }
        int size(int x){
            return siz[root(x)];
        }
};
vector<int> a(100009);
vector<int> b(100009);
vector<int> c(100009);
int main(){
    int n, m;
    cin >> n >> m;
    UnionFind uf;
    uf.init(n);
    vector<pair<int, int>> edg;
    for (int i = 0; i < m; i++){
        cin >> a[i] >> b[i] >> c[i];
        a[i] -= 1;
        b[i] -= 1;
        edg.push_back(make_pair(c[i], i));
    }
    int ans = 0;
    sort(edg.begin(), edg.end());
    for (int i = 0; i < m; i++){
        int idx = edg[i].second;
        if (uf.same(a[idx], b[idx]) == false){
            uf.unite(a[idx], b[idx]);
            ans += edg[i].first;
        }
    }
    cout << ans << endl;
}

提出情報

提出日時
問題 A67 - MST (Minimum Spanning Tree)
ユーザ harry_arbrebleu
言語 C++ (GCC 9.2.1)
得点 1000
コード長 1822 Byte
結果 AC
実行時間 76 ms
メモリ 6556 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 1000 / 1000
結果
AC × 1
AC × 21
セット名 テストケース
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_in_00.txt, 01_in_01.txt, 01_in_02.txt, 01_in_03.txt, 01_in_04.txt, 01_in_05.txt, 01_in_06.txt, 01_in_07.txt, 01_in_08.txt, 01_in_09.txt, 01_in_10.txt, 01_in_11.txt, 01_in_12.txt, 01_in_13.txt, 01_in_14.txt, 01_in_15.txt, 01_in_16.txt, 01_in_17.txt, 01_in_18.txt, 01_in_19.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 8 ms 4496 KiB
01_in_00.txt AC 3 ms 4468 KiB
01_in_01.txt AC 7 ms 4460 KiB
01_in_02.txt AC 6 ms 4396 KiB
01_in_03.txt AC 4 ms 4380 KiB
01_in_04.txt AC 5 ms 4428 KiB
01_in_05.txt AC 4 ms 4388 KiB
01_in_06.txt AC 3 ms 4480 KiB
01_in_07.txt AC 4 ms 4508 KiB
01_in_08.txt AC 3 ms 4376 KiB
01_in_09.txt AC 5 ms 4348 KiB
01_in_10.txt AC 56 ms 5380 KiB
01_in_11.txt AC 57 ms 5320 KiB
01_in_12.txt AC 76 ms 6392 KiB
01_in_13.txt AC 76 ms 6472 KiB
01_in_14.txt AC 69 ms 6544 KiB
01_in_15.txt AC 68 ms 6548 KiB
01_in_16.txt AC 76 ms 6396 KiB
01_in_17.txt AC 75 ms 6416 KiB
01_in_18.txt AC 73 ms 6556 KiB
01_in_19.txt AC 73 ms 6468 KiB