結果

問題 No.466 ジオラマ
ユーザー vjudge1
提出日時 2025-06-22 10:08:10
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,308 bytes
コンパイル時間 831 ms
コンパイル使用メモリ 72,292 KB
実行使用メモリ 7,848 KB
最終ジャッジ日時 2025-06-22 10:08:20
合計ジャッジ時間 9,442 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 WA * 2
other AC * 49 WA * 34
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <iostream>
#include <vector>
using namespace std;

int main() {
    int A, B, C, D;
    cin >> A >> B >> C >> D;

    int N = A + B - C;
    if (N < 2) {
        cout << -1 << endl;
        return 0;
    }

    int min_edges = A + B - C - 1;
    if (min_edges > D) {
        cout << -1 << endl;
        return 0;
    }

    cout << N << " " << min_edges << endl;

    // Construct the graph
    vector<pair<int, int>> edges;

    // Only from 0: A - C nodes (including 0)
    int last = 0;
    for (int i = 2; i < 2 + (A - C - 1); ++i) {
        edges.emplace_back(last, i);
        last = i;
    }

    // Only from 1: B - C nodes (including 1)
    last = 1;
    for (int i = 2 + (A - C - 1); i < 2 + (A - C - 1) + (B - C - 1); ++i) {
        edges.emplace_back(last, i);
        last = i;
    }

    // Common part: C nodes
    if (C > 0) {
        int common_start = 2 + (A - C - 1) + (B - C - 1);
        edges.emplace_back(0, common_start);
        edges.emplace_back(1, common_start);
        last = common_start;
        for (int i = 1; i < C; ++i) {
            edges.emplace_back(last, common_start + i);
            last = common_start + i;
        }
    }

    // Output edges
    for (auto& edge : edges) {
        cout << edge.first << " " << edge.second << endl;
    }

    return 0;
}
0