Submission #1087524

#TimeUsernameProblemLanguageResultExecution timeMemory
1087524imaxblue무제 (POI11_imp)C++17
9 / 100
1328 ms33540 KiB
#include <iostream>
#include <vector>
#include <bitset>

const int MAX_N = 3000;

int main() {
    int n, m;
    std::cin >> n >> m;
    int k = n / 3;

    std::vector<std::bitset<MAX_N>> adj(n);

    for (int i = 0; i < m; ++i) {
        int a_i, b_i;
        std::cin >> a_i >> b_i;
        --a_i; --b_i; // Zero-based indexing
        adj[a_i].set(b_i);
        adj[b_i].set(a_i);
    }

    for (int u = 0; u < n; ++u) {
        std::bitset<MAX_N> S;
        S.set(u);
        std::bitset<MAX_N> Candidates = adj[u];

        while (S.count() < k && Candidates.any()) {
            int v = -1;
            // Find a candidate v
            for (int i = Candidates._Find_first(); i < n; i = Candidates._Find_next(i)) {
                if ((adj[i] & S) == S) {
                    v = i;
                    break;
                }
            }
            if (v == -1) break;
            S.set(v);
            Candidates &= adj[v];
            Candidates.reset(v);
        }

        if (S.count() >= k) {
            // Output the clique
            for (int i = 0, cnt = 0; i < n && cnt < k; ++i) {
                if (S.test(i)) {
                    std::cout << (i + 1) << ' ';
                    ++cnt;
                }
            }
            std::cout << '\n';
            return 0;
        }
    }

    // If no clique is found (which is unlikely given the problem constraints), output an empty list.
    // However, the problem guarantees the existence of such a clique.
    return 0;
}

Compilation message (stderr)

imp.cpp: In function 'int main()':
imp.cpp:27:26: warning: comparison of integer expressions of different signedness: 'std::size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   27 |         while (S.count() < k && Candidates.any()) {
      |                ~~~~~~~~~~^~~
imp.cpp:42:23: warning: comparison of integer expressions of different signedness: 'std::size_t' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   42 |         if (S.count() >= k) {
      |             ~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...