結果

問題 No.3585 Make Ends Meet (Easy)
コンテスト
ユーザー marc2825
提出日時 2026-06-13 17:02:37
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,206 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 237 ms
コンパイル使用メモリ 95,984 KB
実行使用メモリ 84,480 KB
最終ジャッジ日時 2026-07-10 21:02:33
合計ジャッジ時間 5,458 ms
ジャッジサーバーID
(参考情報)
judge1_1 / judge3_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 43 WA * 5
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import sys

def solve():
    input = sys.stdin.read
    data = input().split()
    if not data:
        return
    
    N = int(data[0])
    M = int(data[1])
    K = int(data[2])
    
    path_nodes = list(range(1, K)) + [N]
    if K == 1:
        path_nodes = [1, N]
    else:
        path_nodes = [1] + list(range(2, K + 1)) + [N]
        
    must_keep = set()
    for i in range(K):
        u, v = path_nodes[i], path_nodes[i+1]
        must_keep.add((min(u, v), max(u, v)))
        
    path_idx = {node: i for i, node in enumerate(path_nodes)}
    
    must_remove = []
    flexible = []
    
    for u in range(1, N + 1):
        for v in range(u + 1, N + 1):
            if (u, v) in must_keep:
                continue
                
            if u in path_idx and v in path_idx:
                must_remove.append((u, v))
            else:
                flexible.append((u, v))
                
    if M < len(must_remove) or M > len(must_remove) + len(flexible):
        print("No")
        return
        
    remove_edges = must_remove + flexible[:M - len(must_remove)]
    
    print("Yes")
    for u, v in remove_edges:
        print(f"{u} {v}")

if __name__ == '__main__':
    solve()
0