문제 링크

문제 설명

예시

[input]
3 2
1 2
2 3

[output]
POSSIBLE


[input]
4 3
1 2
2 3
3 4

[output]
IMPOSSIBLE


[input]
100000 1
1 99999

[output]
IMPOSSIBLE


[input]
5 5
1 3
4 5
2 3
2 4
1 4

[output]
POSSIBLE

사고의 흐름

모범답안

1. 여기를 누르면 답이 보입니다
def answer(destination, services):
    P, M = ("POSSIBLE", "IMPOSSIBLE")
    dic = {}
    for a, b in services:
        if dic.get(a) is None:
            dic[a] = [b]
        else:
            dic[a].append(b)
        if dic.get(b) is None:
            dic[b] = [a]
        else:
            dic[b].append(a)
    if dic.get(destination) is None: return M
    arr = dic[destination]
    for i in arr:
        if 1 in dic[i]:
            return P
    return M

n, m = map(int, input().split())
services = []
for _ in range(m):
    a, b = map(int, input().split())
    services.append((a, b))
print(answer(n, services))

dic[a] = dic[a] + [b] 보다 append 쓰는게 훨씬 빠르다.

2. 여기를 누르면 답이 보입니다