[백준] 1260 DFS와 BFS

cheeeese·2022년 6월 1일
0

코딩테스트 연습

목록 보기
111/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/1260

💻 내 코드

from collections import deque

n, m, v=map(int, input().split())

mlist=[[0]*(n+1) for _ in range(n+1)]

for _ in range(m):
    a,b=map(int, input().split())
    mlist[a][b]=mlist[b][a]=1

visited_d=[0 for _ in range(n+1)]
visited_b=[0 for _ in range(n+1)]

def dfs(v):
    print(v, end=' ')
    visited_d[v]=1
    for i in range(1, n+1):
        if visited_d[i]==0 and mlist[v][i]==1:
            dfs(i)

def bfs(s):
    queue=deque([s])
    visited_b[s]=1

    while queue:
        v=queue.popleft()
        print(v, end=' ')
        for i in range(1, n+1):
            if visited_b[i]==0 and mlist[v][i]==1:
                queue.append(i)
                visited_b[i]=1

dfs(v)
print()
bfs(v)

💡 풀이

원래 제출했던 코드

from collections import deque

def dfs(mlist, v, visited):
    visited[v]=True
    print(v, end=' ')
    for i in mlist[v]:
        if not visited[i]:
            dfs(mlist, i, visited)

def bfs(mlist, s, visited):
    queue=deque([s])
    visited[s]=True

    while queue:
        v=queue.popleft()
        print(v, end=' ')
        for i in mlist[v]:
            if not visited[i]:
                queue.append(i)
                visited[i]=True

n, m, v=map(int, input().split())

mlist=[[] for _ in range(n+1)]

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

visited_d=[False]*(n+1)
visited_b=[False]*(n+1)

dfs(mlist, v, visited_d)
print()
bfs(mlist, v, visited_b)
  • 계속 틀렸습니다가 나오는데 아무리 봐도 이유를 모르겠음
  • 이 코드에서는 리스트에 인접한 노드의 숫자들을 담아두었고 제출해서 맞은 코드는 각 인덱스에 노드 수 만큼 0을 채우고 안접한 노드의 인덱스의 수를 1로 바꿈

0개의 댓글