結果
問題 |
No.1775 Love Triangle 2
|
ユーザー |
![]() |
提出日時 | 2025-06-12 19:08:24 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,437 bytes |
コンパイル時間 | 177 ms |
コンパイル使用メモリ | 81,984 KB |
実行使用メモリ | 69,096 KB |
最終ジャッジ日時 | 2025-06-12 19:08:43 |
合計ジャッジ時間 | 7,877 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 21 WA * 69 |
ソースコード
import sys from collections import deque from collections import defaultdict def main(): N, M = map(int, sys.stdin.readline().split()) X, Y, Z = map(int, sys.stdin.readline().split()) friends = defaultdict(set) for _ in range(M): A, B = map(int, sys.stdin.readline().split()) friends[A].add(B) friends[B].add(A) # Construct allowed adjacency list allowed = [[] for _ in range(N+1)] for u in range(1, N+1): for v in range(1, N+1): if u != v and v not in friends[u]: allowed[u].append(v) # Check if each of X, Y, Z has at least two allowed neighbors if len(allowed[X]) < 2 or len(allowed[Y]) < 2 or len(allowed[Z]) < 2: print(-1) return # Function to compute shortest path using BFS def bfs(start, end): visited = [False] * (N + 1) q = deque() q.append((start, 0)) visited[start] = True while q: u, dist = q.popleft() if u == end: return dist for v in allowed[u]: if not visited[v]: visited[v] = True q.append((v, dist + 1)) return -1 # Compute shortest paths xy = bfs(X, Y) yz = bfs(Y, Z) zx = bfs(Z, X) if xy == -1 or yz == -1 or zx == -1: print(-1) else: print(xy + yz + zx) if __name__ == "__main__": main()