SW Expert

[SWEA] 2814 최장 경로 Python

꿀떡최고 2021. 4. 29. 10:00
반응형

[ 문제 ]

 

난이도:  D3

문제 번호:  2814

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GOPPaAeMDFAXB&categoryId=AV7GOPPaAeMDFAXB&category 

Type=CODE&problemTitle=

2814&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com


 

N개의 정점과 M개의 간선으로 구성된 가중치가 없는 무방향 그래프에서의 최장 경로의 길이를 계산하자.

정점의 번호는 1번부터 N번까지 순서대로 부여되어 있다.

경로에는 같은 정점의 번호가 2번 이상 등장할 수 없으며,

경로 상의 인접한 점들 사이에는 반드시 두 정점을 연결하는 간선이 존재해야 한다.

경로의 길이는 경로 상에 등장하는 정점의 개수를 나타낸다.

 


 

[ 코드 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
def dfs(i, cnt):
    global max_v
 
    for j in range(1, N+1):
        if not visited[j] and adj[i][j]:
            visited[j] = 1
            dfs(j, cnt+1)
            visited[j] = 0
    else:
        if cnt > max_v:
            max_v = cnt
 
 
for tc in range(1int(input())+1):
    N, M = map(int, input().split())
    adj = [[0]*(N+1for _ in range(N+1)]
    visited = [0* (N+1)
    max_v = 0
    for _ in range(M):
        x, y = map(int, input().split())
        adj[x][y] = 1
        adj[y][x] = 1
    for i in range(1, N+1):
        visited[i] = 1
        dfs(i, 1)
        visited[i] = 0
    print(f'#{tc} {max_v}')
cs

 

반응형

'SW Expert' 카테고리의 다른 글

[SWEA] 1232 사칙연산 Python  (0) 2021.05.04
[SWEA] 1231 중위순회 Python  (0) 2021.05.03
[SWEA] 1208 Flatten Python  (0) 2021.05.02
[SWEA] 1204 최빈수 구하기Python  (0) 2021.05.01
[SWEA] 1206 View Python  (0) 2021.04.30