728x90
300x250
visit를 2차원배열로 구성했더니 답은 맞는데 계속 오답이 나와서 1차원으로 했다.
뭔가 예외처리를 빼먹은게 있는 듯한데.. 잘모르겠다.
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Solution {
public static int T,N,M,ans=Integer.MIN_VALUE;
public static boolean[] visit;
public static int[][] map;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
T = sc.nextInt();
for (int tc = 1; tc <= T; tc++) {
ans = Integer.MIN_VALUE;
N = sc.nextInt();
M = sc.nextInt();
map = new int[N+1][N+1];
//정점과 간선 연결
for (int i = 0; i < M; i++) {
int n1 = sc.nextInt();
int n2 = sc.nextInt();
map[n1][n2] = map[n2][n1] = 1; //1이 연결되었다는 뜻
}
//최장경로 찾기
for (int i = 1; i <= N; i++) {
visit = new boolean[N+1];
visit[i]=true;
dfs(i,1);
visit[i]=false;
}
System.out.println("#"+tc+" "+ans);
}
}
public static void dfs(int num, int cnt) {
//탐색
for (int i = 1; i <= N; i++) {
//같은 수 끼리의 비교인가?
if(i==num)
continue;
//이미 방문한 곳인가?
if(visit[i])
continue;
//정점끼리 연결이 안된 곳인가?
if(map[num][i] != 1)
continue;
//System.out.println(num+","+i);
//방문처리
visit[i]=true;
dfs(i,cnt+1); //반복.. i와 연결이 된 다른 것들을 탐구하러 ㄱㄱ
visit[i]=false;
}
//System.out.println("cnt:"+cnt);
//종료조건
ans = Math.max(ans, cnt);
}
}
728x90
'알고리즘 > DFS & BFS' 카테고리의 다른 글
SWEA - 1210. [S/W 문제해결 기본] 2일차 - Ladder1 (0) | 2020.08.09 |
---|---|
프로그래머스[Level2] - 카카오프렌즈 컬러링북 [2017 카카오코드 예선] (0) | 2020.04.04 |
백준 14501번: 퇴사 (0) | 2020.03.21 |
백준 3190번: 뱀 (0) | 2020.03.08 |
백준 2667번: 단지번호붙이기 (1) | 2020.03.02 |