提出 #66607237


ソースコード 拡げる

#include <bits/stdc++.h>
using namespace std;
#define int long long
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

/*
*/

struct DSU {
    int n, components;
    vector<int> parent, size;

    // Initialize DSU with n elements (1-indexed or 0-indexed as needed)
    DSU(int _n) : n(_n), components(_n), parent(n+1), size(n+1, 1) {
        iota(parent.begin(), parent.end(), 0);
    }

    // Find with path compression
    int find(int x) {
        if (parent[x] != x)
            parent[x] = find(parent[x]);
        return parent[x];
    }

    // Union by size; returns true if merged, false if already in same set
    bool unite(int a, int b) {
        a = find(a);
        b = find(b);
        if (a == b) return false;
        // Ensure the larger set remains root
        if (size[a] < size[b])
            swap(a, b);
        parent[b] = a;
        size[a] += size[b];
        components--;
        return true;
    }

    // Check if two elements are in the same set
    bool same(int a, int b) {
        return find(a) == find(b);
    }

    // Get size of the set containing x
    int get_size(int x) {
        return size[find(x)];
    }
};

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n, q;
    cin >> n >> q;
    DSU dsu(n + q + 1);
    priority_queue<array<int, 3>, vector<array<int, 3>>, greater<array<int, 3>>> s;
    vector<pair<int, int>> in(n);
    vector<map<int, vector<int>>> has(n + q + 1);
    for(int i = 0; i < n; i++) {
        cin >> in[i].first >> in[i].second;
    }
    for(int i = 0; i < n; i++) {
        for(int j = i + 1; j < n; j++) {
            int dis = abs(in[i].first - in[j].first) + abs(in[i].second - in[j].second);
            s.push({dis, i, j});
            has[i][dis].push_back(j);
        }
    }
    int c = 0;
    while(q--) {
        c++;
        int t;
        cin >> t;
        if(t == 1) {
            int a, b;
            cin >> a >> b;
            in.push_back({a, b});
            for(int i = 0; i < n; i++) {
                int dis = abs(in[i].first - a) + abs(in[i].second - b);
                s.push({dis, i, n});
                has[i][dis].push_back(n);
            }
            n++;
        } else if(t == 2) {
            int extra = has.size() - n;
            if(dsu.components - extra == 1) {
                cout << -1 << '\n';
                continue;
            }
            int opt;
            while(s.size()) {
                auto [d, u, v] = s.top();
                int pu = dsu.find(u), pv = dsu.find(v);
                s.pop();
                if(pu != pv) {
                    dsu.unite(u, v);
                    opt = d;
                    break;
                }
            }
            while(s.size() && s.top()[0] == opt) {
                auto [d, u, v] = s.top();
                s.pop();
                dsu.unite(u, v);
            }
            cout << opt << '\n';
        } else {
            int u, v;
            cin >> u >> v;
            u--, v--;
            int pu = dsu.find(u), pv = dsu.find(v);
            cout << (pu == pv ? "Yes" : "No") << '\n';
        }
    }
}

提出情報

提出日時
問題 F - Connecting Points
ユーザ Wasif_Shahzad
言語 C++ 20 (gcc 12.2)
得点 0
コード長 3269 Byte
結果 TLE
実行時間 2237 ms
メモリ 418388 KiB

コンパイルエラー

In file included from /usr/include/c++/12/istream:39,
                 from /usr/include/c++/12/sstream:38,
                 from /usr/include/c++/12/complex:45,
                 from /usr/include/c++/12/ccomplex:39,
                 from /usr/include/x86_64-linux-gnu/c++/12/bits/stdc++.h:54,
                 from Main.cpp:1:
In member function ‘std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>]’,
    inlined from ‘int main()’ at Main.cpp:107:21:
/usr/include/c++/12/ostream:202:25: warning: ‘opt’ may be used uninitialized [-Wmaybe-uninitialized]
  202 |       { return _M_insert(__n); }
      |                ~~~~~~~~~^~~~~
Main.cpp: In function ‘int main()’:
Main.cpp:91:17: note: ‘opt’ was declared here
   91 |             int opt;
      |                 ^~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 0 / 500
結果
AC × 1
AC × 42
TLE × 3
セット名 テストケース
Sample 00_sample_00.txt
All 00_sample_00.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt, 01_test_41.txt, 01_test_42.txt, 01_test_43.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3452 KiB
01_test_00.txt AC 266 ms 130072 KiB
01_test_01.txt AC 271 ms 129212 KiB
01_test_02.txt TLE 2230 ms 320288 KiB
01_test_03.txt AC 277 ms 129136 KiB
01_test_04.txt AC 1415 ms 245248 KiB
01_test_05.txt AC 1392 ms 244644 KiB
01_test_06.txt AC 957 ms 186424 KiB
01_test_07.txt AC 278 ms 129336 KiB
01_test_08.txt AC 1022 ms 189096 KiB
01_test_09.txt AC 802 ms 169444 KiB
01_test_10.txt AC 773 ms 167360 KiB
01_test_11.txt AC 1513 ms 244944 KiB
01_test_12.txt AC 326 ms 166988 KiB
01_test_13.txt AC 332 ms 167088 KiB
01_test_14.txt TLE 2237 ms 407736 KiB
01_test_15.txt AC 330 ms 167164 KiB
01_test_16.txt AC 1776 ms 333776 KiB
01_test_17.txt AC 1856 ms 336808 KiB
01_test_18.txt AC 1182 ms 268420 KiB
01_test_19.txt AC 328 ms 166988 KiB
01_test_20.txt AC 1158 ms 269212 KiB
01_test_21.txt AC 812 ms 227564 KiB
01_test_22.txt AC 935 ms 243256 KiB
01_test_23.txt AC 1653 ms 336164 KiB
01_test_24.txt AC 245 ms 63888 KiB
01_test_25.txt AC 222 ms 65652 KiB
01_test_26.txt AC 320 ms 81256 KiB
01_test_27.txt AC 493 ms 106212 KiB
01_test_28.txt AC 221 ms 65672 KiB
01_test_29.txt AC 381 ms 83412 KiB
01_test_30.txt AC 838 ms 136744 KiB
01_test_31.txt AC 975 ms 207436 KiB
01_test_32.txt AC 311 ms 80996 KiB
01_test_33.txt AC 864 ms 135628 KiB
01_test_34.txt AC 1020 ms 222520 KiB
01_test_35.txt AC 1156 ms 260624 KiB
01_test_36.txt AC 531 ms 104404 KiB
01_test_37.txt AC 1002 ms 212696 KiB
01_test_38.txt AC 1189 ms 259064 KiB
01_test_39.txt AC 1162 ms 259176 KiB
01_test_40.txt AC 1917 ms 339520 KiB
01_test_41.txt AC 1247 ms 268916 KiB
01_test_42.txt TLE 2237 ms 418388 KiB
01_test_43.txt AC 1 ms 3516 KiB