File tree Expand file tree Collapse file tree 3 files changed +216
-0
lines changed
Expand file tree Collapse file tree 3 files changed +216
-0
lines changed Original file line number Diff line number Diff line change 1+ package algorithm .week7 ;
2+
3+ import java .io .*;
4+ import java .util .*;
5+
6+ public class b11724 {
7+ static boolean visited [];
8+ static ArrayList <Integer >[] A ;
9+
10+ public static void main (String [] args ) throws IOException {
11+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
12+ StringTokenizer st = new StringTokenizer (br .readLine ());
13+
14+ int n = Integer .parseInt (st .nextToken ());
15+ int m = Integer .parseInt (st .nextToken ());
16+
17+ visited = new boolean [n +1 ];
18+ A = new ArrayList [n +1 ];
19+
20+
21+ for (int i = 1 ; i < n +1 ; i ++) {
22+ A [i ] = new ArrayList <Integer >();
23+ }
24+
25+ for (int i = 0 ; i < m ; i ++) {
26+ // 입력값 받아오기
27+ st = new StringTokenizer (br .readLine ());
28+
29+ int s = Integer .parseInt (st .nextToken ());
30+ int e = Integer .parseInt (st .nextToken ());
31+
32+ A [s ].add (e );
33+ A [e ].add (s );
34+
35+ }
36+
37+
38+ int count = 0 ;
39+ for (int i = 1 ; i < n +1 ; i ++) {
40+ if (!visited [i ]) {
41+ count ++;
42+
43+ DFS (i );
44+ }
45+ }
46+
47+
48+ System .out .println (count );
49+
50+
51+ }
52+
53+ private static void DFS (int v ) {
54+ if (visited [v ]) {
55+ return ;
56+ }
57+
58+ // 재귀 함수
59+ visited [v ] = true ;
60+ for (int i : A [v ]) {
61+ if (!visited [i ]) {
62+ DFS (i );
63+ }
64+ }
65+ }
66+ }
Original file line number Diff line number Diff line change 1+ package algorithm .week7 ;
2+
3+ import java .io .BufferedReader ;
4+ import java .io .IOException ;
5+ import java .io .InputStreamReader ;
6+ import java .util .ArrayList ;
7+ import java .util .StringTokenizer ;
8+
9+ public class b13023 {
10+ static boolean isTrue ;
11+ static boolean visited [];
12+ static ArrayList <Integer >[] A ;
13+
14+ static int n ;
15+ static int m ;
16+
17+ public static void main (String [] args ) throws IOException {
18+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
19+ StringTokenizer st = new StringTokenizer (br .readLine ());
20+
21+ n = Integer .parseInt (st .nextToken ()); // 친구 갯수
22+ m = Integer .parseInt (st .nextToken ()); // 친구 관계 수
23+
24+
25+ visited = new boolean [n +1 ];
26+ A = new ArrayList [n +1 ];
27+
28+ for (int i = 0 ; i < n ; i ++) {
29+ A [i ] = new ArrayList <Integer >();
30+ }
31+
32+ // 배열 만들기
33+ for (int i = 0 ; i < m ; i ++) {
34+ st = new StringTokenizer (br .readLine ());
35+ int s = Integer .parseInt (st .nextToken ()); // 사람
36+ int e = Integer .parseInt (st .nextToken ()); // 관계
37+
38+ A [s ].add (e );
39+ A [e ].add (s );
40+ }
41+
42+ // backtraking
43+ for (int i = 0 ; i < n ; i ++) {
44+ if (!isTrue ) {
45+ backtraking (i , 0 );
46+ }
47+
48+ }
49+
50+
51+ System .out .println (isTrue ? "1" : "0" );
52+
53+ }
54+
55+ private static void backtraking (int v , int depth ) {
56+
57+ // 정답
58+ if (depth == 4 ) {
59+ isTrue = true ;
60+ return ;
61+ }
62+
63+ visited [v ] = true ;
64+ for (int i : A [v ]) {
65+ if (!visited [i ]) {
66+ backtraking (i , depth +1 );
67+ }
68+ }
69+
70+ visited [v ] = false ;
71+
72+ }
73+
74+
75+ }
Original file line number Diff line number Diff line change 1+ package algorithm .week7 ;
2+
3+ import java .io .BufferedReader ;
4+ import java .io .IOException ;
5+ import java .io .InputStreamReader ;
6+ import java .util .ArrayList ;
7+ import java .util .StringTokenizer ;
8+
9+ public class b2023 {
10+ static boolean isTrue ;
11+ static boolean visited [];
12+ static ArrayList <Integer >[] A ;
13+
14+ static int n ;
15+ static int m ;
16+
17+ public static void main (String [] args ) throws IOException {
18+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
19+ StringTokenizer st = new StringTokenizer (br .readLine ());
20+
21+ n = Integer .parseInt (st .nextToken ()); // 친구 갯수
22+ m = Integer .parseInt (st .nextToken ()); // 친구 관계 수
23+
24+
25+ visited = new boolean [n +1 ];
26+ A = new ArrayList [n +1 ];
27+
28+ for (int i = 0 ; i < n ; i ++) {
29+ A [i ] = new ArrayList <Integer >();
30+ }
31+
32+ // 배열 만들기
33+ for (int i = 0 ; i < m ; i ++) {
34+ st = new StringTokenizer (br .readLine ());
35+ int s = Integer .parseInt (st .nextToken ()); // 사람
36+ int e = Integer .parseInt (st .nextToken ()); // 관계
37+
38+ A [s ].add (e );
39+ A [e ].add (s );
40+ }
41+
42+ // backtraking
43+ for (int i = 0 ; i < n ; i ++) {
44+ if (!isTrue ) {
45+ backtraking (i , 0 );
46+ }
47+
48+ }
49+
50+
51+ System .out .println (isTrue ? "1" : "0" );
52+
53+ }
54+
55+ private static void backtraking (int v , int depth ) {
56+
57+ // 정답
58+ if (depth == 4 ) {
59+ isTrue = true ;
60+ return ;
61+ }
62+
63+ visited [v ] = true ;
64+ for (int i : A [v ]) {
65+ if (!visited [i ]) {
66+ backtraking (i , depth +1 );
67+ }
68+ }
69+
70+ visited [v ] = false ;
71+
72+ }
73+
74+
75+ }
You can’t perform that action at this time.
0 commit comments