結果
| 問題 |
No.1775 Love Triangle 2
|
| コンテスト | |
| ユーザー |
gew1fw
|
| 提出日時 | 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()
gew1fw