結果

問題 No.2678 Minmax Independent Set (Hack)
ユーザー NokonoKotlinNokonoKotlin
提出日時 2024-03-13 21:06:53
言語 C++23
(gcc 12.3.0 + boost 1.83.0)
結果
WA  
実行時間 -
コード長 1,549 bytes
コンパイル時間 3,197 ms
コンパイル使用メモリ 258,312 KB
実行使用メモリ 6,676 KB
最終ジャッジ日時 2024-03-13 21:06:57
合計ジャッジ時間 3,710 ms
ジャッジサーバーID
(参考情報)
judge13 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;

// 列が小さすぎて WA の確率が足りない
int main(int argc, char* argv[]) {
    int N = 19993;
    int L = 3999;  // 列の個数
    vector<vector<int>> G(N + 1);
    int p = 600;  // 長さ 3 の列が左から何番目か( 中央あたりの偶数列目なら OK )

    for (int i = 1; i < L; i++) {
        G[i].push_back(i + 1);
        G[i + 1].push_back(i);
    }
    int id = L + 1;

    for (int u = 1; u <= L; u++) {
        int now = u;

        // 縦に 3 つ
        if (u == p) {
            G[now].push_back(id);
            G[id].push_back(now);
            id++;
            G[now].push_back(id);
            G[id].push_back(now);
            id++;
        } else {  // 縦に 5 つ
            G[now].push_back(id);
            G[id].push_back(now);
            now = id;
            id++;
            G[now].push_back(id);
            G[id].push_back(now);
            id++;

            now = u;
            G[now].push_back(id);
            G[id].push_back(now);
            now = id;
            id++;
            G[now].push_back(id);
            G[id].push_back(now);
            id++;
        }
    }

    stack<int> S;
    S.push(1);
    vector<int> visited(N + 1, 0);

    cout << N << endl;
    while (!S.empty()) {
        int now = S.top();
        S.pop();
        visited[now] = 1;

        for (int nx : G[now]) {
            if (visited[nx]) continue;
            cout << now << " " << nx << "\n";
            S.push(nx);
        }
    }

    return 0;
}
0