답안 #734081

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
734081 2023-05-01T16:14:40 Z lorenzoferrari Teleporters (IOI08_teleporters) C++17
100 / 100
717 ms 38772 KB
#pragma GCC target("avx2")
#include <bits/stdc++.h>
using namespace std;

static constexpr int N = 2e6 + 42;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n; cin >> n;
    int m; cin >> m;
    vector<array<int, 2>> adj;
    for (int i = 0, a, b; i < n; ++i) {
        cin >> a >> b;
        adj.push_back({a, b});
        adj.push_back({b, a});
    }
    sort(begin(adj), end(adj));
    int last = adj.back()[0];
    auto find_next = [&](int i) -> int {
        auto it = upper_bound(begin(adj), end(adj), array<int,2>{i, N});
        return (*it)[1];
    };
    int ans = 0;
    bitset<N> vis;
    for (int cur = 0; cur != last;) {
        vis[cur] = true;
        cur = find_next(cur);
        ++ans;
    }
    vector<int> cyc;
    for (auto [a, b] : adj) {
        if (vis[a] || a == last) continue;
        int len = 0;
        while (!vis[a]) {
            vis[a] = true;
            a = find_next(a);
            ++len;
        }
        cyc.push_back(len);
    }
    sort(begin(cyc), end(cyc));
    while (m--) {
        if (!cyc.empty()) {
            ans += 2 + cyc.back();
            cyc.pop_back();
        } else {
            ans += 1;
            cyc.push_back(1);
        }
    }
    cout << ans << "\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 560 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 480 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 556 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 468 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 596 KB Output is correct
2 Correct 9 ms 964 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 724 KB Output is correct
2 Correct 10 ms 1000 KB Output is correct
3 Correct 15 ms 1496 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 9 ms 1080 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 1372 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 76 ms 4692 KB Output is correct
2 Correct 220 ms 12828 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 135 ms 7700 KB Output is correct
2 Correct 305 ms 15052 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 419 ms 24852 KB Output is correct
2 Correct 494 ms 27200 KB Output is correct
3 Correct 470 ms 32456 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 661 ms 30516 KB Output is correct
2 Correct 706 ms 33256 KB Output is correct
3 Correct 615 ms 30536 KB Output is correct
4 Correct 552 ms 30896 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 717 ms 37364 KB Output is correct
2 Correct 706 ms 37580 KB Output is correct
3 Correct 552 ms 38772 KB Output is correct
4 Correct 579 ms 38740 KB Output is correct