728x90
300x250
https://www.acmicpc.net/problem/13023
역시나 문제 이해하는데에 많은 시간을 소비..
결론은 5명이 연결된 친구관계가 있느냐(1) 없느냐(0)를 판단하는 것
<Java 코드>
package algorithm.boj;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
public class Boj13023 {
public static int N, M, ans =0;
public static ArrayList<Integer> friend[];
public static boolean visit[][], check[];
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.setIn(new FileInputStream("Test.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
visit = new boolean[N][N];
check = new boolean[N];
friend = new ArrayList[N];
for (int i = 0; i < N; i++) {
friend[i] = new ArrayList<Integer>();
}
for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
friend[a].add(b);
friend[b].add(a);
}
for (int i = 0; i < N; i++) {
if(ans==1)
break;
check[i]=true;
fun(i,0);
check[i]=false;
}
System.out.println(ans);
}
public static void fun(int num, int cnt) {
if(cnt == 4) {
ans = 1;
return;
}
for (int i = 0; i < friend[num].size(); i++) {
int target = friend[num].get(i);
if(visit[num][target] || visit[target][num]) //지나간 경로인가?
continue;
if(check[target]) //이미 한번 연결한 친구인가?
continue;
check[target] =true;
visit[num][target] = visit[target][num] = true;
fun(target,cnt+1);
check[target] =false;
visit[num][target] = visit[target][num] = false;
}
}
}
728x90
'알고리즘 > DFS & BFS' 카테고리의 다른 글
백준 12851번: 숨바꼭질 2 [BFS][그래프] - Java (0) | 2024.02.27 |
---|---|
백준 2573번: 빙산 [DFS][BFS][탐색][그래프]-Java (1) | 2024.02.25 |
백준 2606번: 바이러스 [DFS][BFS][Java] (0) | 2021.04.14 |
백준 1743번: 음식물 피하기[DFS][Java] (0) | 2021.04.14 |
백준 1303번: 전쟁 - 전투 [DFS][BFS][Java] (1) | 2021.04.14 |