원본 문제 : https://www.acmicpc.net/problem/1260
문제 참고 : https://javannspring.tistory.com/174
<첫번째>
import java.io.*
import java.util.*
var N: Int = 0
var M: Int = 0
var V: Int = 0
var graph: Array<IntArray> = arrayOf()
var visited: BooleanArray = booleanArrayOf()
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val nmv = readLine().split(" ")
N = nmv[0].toInt()
M = nmv[1].toInt()
V = nmv[2].toInt()
graph = Array(N+1) { IntArray( N+1 ) }
visited = BooleanArray(N+1)
for ( i in 0 until M ) {
val net = readLine().split(" ")
val a = (net[0] + "").toInt()
val b = (net[1] + "").toInt()
graph[a][b] = 1
graph[b][a] = 1
}
for ( i in 0 until N+1 )
visited[i] = false
dfs(V)
println()
for ( i in 0 until N+1 )
visited[i] = false
bfs(V)
}
fun dfs(v: Int) {
visited[v] = true
print("$v ")
for ( i in 1 until N+1 ) {
if ( graph[v][i] == 1 && visited[i] == false )
dfs(i)
}
}
fun bfs(v: Int) {
val queue: Queue<Int> = LinkedList<Int>()
queue.add(v)
visited[v] = true
print("$v ")
while ( !queue.isEmpty() ) {
val d = queue.poll()
for ( i in 0 until N+1 ) {
if (graph[d][i] == 1 && visited[i] == false){
queue.add(i)
visited[i] = true
print("$i ")
}
}
}
}
<두번째>
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.*
var nmv: List<Int> = listOf()
var matrix: Array<IntArray> = arrayOf()
var visited = booleanArrayOf()
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
nmv = readLine().split(" ")
.map { it.toInt() }
matrix = Array(nmv[0]) { IntArray(nmv[0]) }
visited = BooleanArray(nmv[0])
repeat(nmv[1]) {
val xy = readLine().split(" ")
.map { it.toInt() }
matrix[xy[0] - 1][xy[1] - 1] = 1
matrix[xy[1] - 1][xy[0] - 1] = 1
}
visited.fill(false)
dfs(nmv[2] - 1)
println()
visited.fill(false)
bfs(nmv[2] - 1)
}
fun dfs(v: Int) {
visited[v] = true
print("${v + 1} ")
for (i in 0 until nmv[0]) {
if (matrix[v][i] == 1 && !visited[i])
dfs(i)
}
}
fun bfs(v: Int) {
val list: LinkedList<Int> = LinkedList()
list.add(v)
visited[v] = true
print("${v + 1} ")
while (list.isNotEmpty()) {
val now = list.poll()
for (i in 0 until nmv[0]) {
if (matrix[now][i] == 1 && !visited[i]) {
list.add(i)
visited[i] = true
print("${i + 1} ")
}
}
}
}
'코딩연습' 카테고리의 다른 글
[백준] 플로이드 (11404)(Kotlin) (0) | 2020.01.30 |
---|---|
[백준] 숨바꼭질 (1697)(Kotlin) (0) | 2020.01.29 |
[백준] 토마토 (7576)(Kotlin) (0) | 2020.01.29 |
[백준] 미로 탐색(2178)(Kotlin) (0) | 2020.01.22 |
[백준] 체스판 다시 칠하기(1018)(Kotlin) (0) | 2020.01.22 |
댓글