結果

問題 No.3012 岩井星人グラフ
ユーザー yamasaKit_
提出日時 2025-01-25 15:47:41
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
TLE  
実行時間 -
コード長 1,197 bytes
コンパイル時間 570 ms
コンパイル使用メモリ 12,160 KB
実行使用メモリ 818,048 KB
最終ジャッジ日時 2025-01-25 23:48:20
合計ジャッジ時間 28,459 ms
ジャッジサーバーID
(参考情報)
judge6 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 8 TLE * 1 MLE * 14
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import *
from itertools import *
from functools import cache, partial
from pprint import pprint
import sys
from typing import Any, Final

try:
    from icecream import ic
except ImportError:  # Graceful fallback if IceCream isn't installed.
    ic = lambda *a: None if not a else (a[0] if len(a) == 1 else a)  # noqa
debug = partial(print, file=sys.stderr)
dpprint = partial(pprint, stream=sys.stderr)
sys.setrecursionlimit(10**6)
MOD = 998244353

X, Y = map(int, input().split())

# ノードの数
N = X * Y

# ic(X, Y, N)

# N x N の隣接行列を作る
D = [[0] * N for _ in range(N)]

for i in range(0, N - 1, Y):
    # i - i + 1 - i + 2 - i + 3 ... + i + Y - 1 とパスをつなぐ
    for j in range(Y - 1):
        # ic(i + j, i + j + 1)
        D[i + j][i + j + 1] = 1
        D[i + j + 1][i + j] = 1

for i in range(0, N - 1, Y):
    # i - i + Y - i + 2Y とパスをつなぐ
    u = i
    v = (i + Y) % N
    # ic(u, v)
    D[u][v] = 1
    D[v][u] = 1
# ic(D)

# 隣接行列からグラフ情報を出力する
M = sum([sum(d) for d in D]) // 2
print(N, M)

for i in range(N):
    for j in range(i + 1, N):
        if D[i][j] == 1:
            print(i + 1, j + 1)
0