[코테 - Softeer] 출퇴근길
![[코테 - Softeer] 출퇴근길](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1706853194244%2F1511591b-2929-4047-a900-b681ca71faf8.png&w=3840&q=75)
https://softeer.ai/practice/6248
1. S->T 이동시 방문 노드
2. T->S 이동시 방문 노드
3. S->노드->S, S에서 다시 S로 돌아올 수 있는 노드
4. T->노드->T, T에서 다시 T로 돌아올 수 있는 노드
3,4의 경우 역방향 그래프를 별도로 생성하여 판단해야한다.
출근길, 퇴근길의 경로에서 모두 방문하는 노드는 결국 양방향으로 이루어져있어야 한다.
import sys
input = sys.stdin.readline
sys.setrecursionlimit(10 ** 6)
def dfs(graph, curr, visited):
if visited[curr] == 1:
return
visited[curr] = 1
for neighbor in graph[curr]:
dfs(graph, neighbor, visited)
return
if __name__=="__main__":
n, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
reversed_graph = [[] for _ in range(n+1)]
for _ in range(m):
v, e = map(int, input().split())
graph[v].append(e)
reversed_graph[e].append(v)
s, t = map(int, input().split())
# S->T 이동시 방문 노드
fromS = [0] * (n+1)
fromS[t] = 1 # t를 미리 방문한 것으로 세팅해서 t를 방문하는 순간 탐색을 종료
dfs(graph, s, fromS)
# T->S 이동시 방문 노드
fromT = [0] * (n+1)
fromT[s] = 1
dfs(graph, t, fromT)
# S->노드->S, S에서 다시 S로 돌아올 수 있는 노드
toS = [0] * (n+1)
dfs(reversed_graph, s, toS)
# T->노드->T, T에서 다시 T로 돌아올 수 있는 노드
toT = [0] * (n+1)
dfs(reversed_graph, t, toT)
count = 0
for i in range(1, n+1):
if fromS[i] and fromT[i] and toS[i] and toT[i]:
count += 1
print(count-2) # s, t vertices는 제외하기
![[코테] 그리디 문제 - 무지의 먹방 라이브](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1712215455263%2F1ac1f35a-8862-4e42-8d0c-e2bea01e04c0.png&w=3840&q=75)
![[코테] Bfs 토마토](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1709032619170%2F70056896-c857-444b-9c99-45bfcb466806.png&w=3840&q=75)
![[코테] Dfs 문제 유형 - 그래프 내에서 구분하여 카운트 하기](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1709019361383%2Fb0585d72-c808-4169-83a9-2724f312e927.png&w=3840&q=75)
![[코테] DFS vs BFS](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1708971211123%2F71f9386c-6a62-43b2-a602-4d084c24d6cf.png&w=3840&q=75)
![[코테] 여행경로](/_next/image?url=https%3A%2F%2Fcdn.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1708971251412%2F27ce72ed-8ee7-4d13-a02f-ff4bbe50c4be.png&w=3840&q=75)