슈콩

[SWEA] 최장 경로 본문

Algorithms/SWEA

[SWEA] 최장 경로

shukong 2025. 11. 5. 23:58

 

 

[문제]

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

[소스 코드]

import java.util.*;
import java.io.*;
public class Solution {
	static int n,result;
	static boolean[][] edge;
	static boolean[] visit;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		int T = Integer.parseInt(br.readLine());
		for(int tc=1;tc<=T;tc++) {
			st = new StringTokenizer(br.readLine());
			n = Integer.parseInt(st.nextToken());
			int m = Integer.parseInt(st.nextToken());
			visit = new boolean[n+1];
			edge = new boolean[n+1][n+1];
			result = 0;
			for(int i=0;i<m;i++) {
				st = new StringTokenizer(br.readLine());
				int x = Integer.parseInt(st.nextToken());
				int y = Integer.parseInt(st.nextToken());
				edge[x][y] = edge[y][x] = true;
			}
			for(int i=1;i<=n;i++) {
				visit[i] = true;
				dfs(i,1);
				visit[i] = false;
			}
			System.out.println("#"+tc+" "+result);
		}
	}
	private static void dfs(int idx,int dis) {
		for(int i=1;i<=n;i++) {
			if(!visit[i] && edge[i][idx]) {
				visit[i] = true;
				dfs(i,dis+1);
				visit[i] = false;
			}
		}
		result = Math.max(result, dis);
	}
}

'Algorithms > SWEA' 카테고리의 다른 글

[SWEA] 3일차 - 회문 2  (0) 2025.11.06
[SWEA] 2일차 - Sum  (0) 2025.11.06
[SWEA] 부분 수열의 합  (0) 2025.11.04
[SWEA] 5일차 - Magnetic  (0) 2025.11.04
[SWEA] 3일차 - 회문 1  (0) 2025.11.04