結果
問題 |
No.1776 Love Triangle 2 (Hard)
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:24:21 |
言語 | PyPy3 (7.3.15) |
結果 |
TLE
|
実行時間 | - |
コード長 | 2,107 bytes |
コンパイル時間 | 412 ms |
コンパイル使用メモリ | 81,904 KB |
実行使用メモリ | 67,300 KB |
最終ジャッジ日時 | 2025-06-12 20:24:35 |
合計ジャッジ時間 | 12,913 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 4 TLE * 1 -- * 171 |
ソースコード
import sys import itertools def main(): N, M = map(int, sys.stdin.readline().split()) X, Y, Z = map(int, sys.stdin.readline().split()) edges = set() for _ in range(M): a, b = map(int, sys.stdin.readline().split()) if a > b: a, b = b, a edges.add((a, b)) # Construct complement graph complement = [[False] * (N + 1) for _ in range(N + 1)] for u in range(1, N + 1): for v in range(u + 1, N + 1): if (u, v) not in edges and (v, u) not in edges: complement[u][v] = True complement[v][u] = True # For each possible subset size starting from 3 for k in range(3, N + 1): # We need at least 3 nodes: X, Y, Z if k < 3: continue # Generate all possible subsets of size k that include X, Y, Z others = [node for node in range(1, N + 1) if node not in {X, Y, Z}] # We need to select (k-3) nodes from others if k - 3 > len(others): continue for selected in itertools.combinations(others, k - 3): S = {X, Y, Z} | set(selected) # Generate all possible permutations of S starting with X and ending with X remaining = list(S - {X}) # Generate all possible permutations of remaining for perm in itertools.permutations(remaining): # Form the permutation P = [X] + list(perm) + [X] # Check if all consecutive pairs are connected in complement graph valid = True for i in range(len(P) - 1): u = P[i] v = P[i+1] if u == v: valid = False break if not complement[u][v]: valid = False break if valid: print(k) print(' '.join(map(str, P))) return # If no solution found print(-1) if __name__ == "__main__": main()