結果

問題 No.3743 World Mapper
コンテスト
ユーザー Kurao
提出日時 2026-09-19 17:52:04
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
RE  
実行時間 -
コード長 3,387 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 64 ms
コンパイル使用メモリ 82,036 KB
実行使用メモリ 79,024 KB
最終ジャッジ日時 2026-09-19 17:52:17
合計ジャッジ時間 5,257 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
部分点1 10 % AC * 4
部分点2 10 % AC * 4 RE * 5
部分点3 10 % AC * 4 RE * 10
部分点4 10 % AC * 4 RE * 15
部分点5 10 % AC * 4 RE * 20
部分点6 10 % AC * 4 RE * 25
部分点7 10 % AC * 4 RE * 30
部分点8 10 % AC * 4 RE * 35
部分点9 10 % AC * 4 RE * 40
満点 10 % AC * 4 RE * 45
合計 5 * 10% = 50 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from __future__ import annotations
import sys
sys.setrecursionlimit(2*10**7)
#↓codon===============================
import string
Alp_low=list(string.ascii_lowercase)
Alp_up=list(string.ascii_uppercase)
Digit="0123456789"
dij=[[0,1],[1,0],[0,-1],[-1,0]]
def nin():
    return list(map(int,input().split()))
def deq(x):
    return [i-1 for i in x]
mod=998244353
_factorial=[1]
def factorial(n):
    while len(_factorial)<=n:
        _factorial.append((_factorial[-1]*len(_factorial))%mod)
    return _factorial[n]

_inv_factorial=[1]
def inv_factorial(n):
    while len(_inv_factorial)<=n:
        _inv_factorial.append((_inv_factorial[-1]*pow(len(_inv_factorial),mod-2,mod))%mod)
    return _inv_factorial[n]

def binom(n,r):
    if r>=mod:
        raise ValueError("r is too big")
    if n<0:
        return 0
    if r>n:
        return 0
    if r<0:
        return 0
    ans=((factorial(n)*inv_factorial(r))%mod*inv_factorial(n-r))%mod
    return ans
def floyd_warshall(n, edges):
    dist = [[0 if i == j else float("inf") for i in range(n)] for j in range(n)]
    pred = [[None] * n for _ in range(n)]

    for u, v, d in edges:
        dist[u][v] = d
        pred[u][v] = u

    for k in range(n):
        for i in range(n):
            for j in range(n):
                if dist[i][k] + dist[k][j] < dist[i][j]:
                    dist[i][j] = dist[i][k] + dist[k][j]
                    pred[i][j] = pred[k][j]
    """Sanity Check
    for u, v, d in edges:
        if dist[u] + d < dist[v]:
            return None
    """

    return dist, pred

import random
random.seed(0)
def main():
    ans=[[], [], [[[286929], [132029]], [[116404, 258784]]], [[[10717, 158778], [268620, 88409], [183571, 62780]], [[75150, 150759, 124012], [282186, 148188, 106784]]], [[[156699, 82239, 256712], [273018, 166408, 276198], [90764, 241945, 288705], [146650, 174883, 27325]], [[38552, 38684, 25719, 198840], [72756, 231718, 191061, 40754], [26806, 19826, 221888, 98389]]], [[[105166, 92589, 205669, 172666], [294402, 75580, 274716, 3684], [285278, 233604, 268957, 200880], [153012, 295385, 70916, 95804], [16981, 53809, 177685, 64139]], [[135673, 196812, 58127, 148297, 137993], [162597, 16797, 171306, 25300, 237667], [121312, 280771, 215575, 300, 197077], [281670, 99161, 242113, 231217, 296148]]]]
    n,=nin()
    for i in ans[n][1]:
        print(*i)
    for i in ans[n][0]:
        print(*i)
    return

    ans=[[],[]]
    use=[i for i in range(1,3*10**5) if i.bit_count()<=10]
    for n in range(2,6):
        while True:
            g=[]
            v=[[] for _ in range(n)]
            h=[[] for _ in range(n-1)]
            for i in range(n):
                for j in range(n):
                    for di,dj in [(0,1),(1,0)]:
                        if 0<=i+di<n and 0<=j+dj<n:
                            #w=random.randint(1,3*10**5)
                            w=random.choice(use)
                            if di==0:
                                v[i].append(w)
                            else:
                                h[i].append(w)
                            g.append((i*n+j,(i+di)*n+(j+dj),w))
                            g.append(((i+di)*n+(j+dj),i*n+j,w))
            d=set(sum(floyd_warshall(n**2,g)[0],[]))
            if len(d)==n**2*(n**2-1)//2+1:
                ans.append([v,h])
                break
    print(ans)

if __name__=="__main__":
    main()
0