Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions week8/week8/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/

### Eclipse ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache
bin/
!**/src/main/**/bin/
!**/src/test/**/bin/

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/

### VS Code ###
.vscode/

### Mac OS ###
.DS_Store
8 changes: 8 additions & 0 deletions week8/week8/.idea/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week8/week8/.idea/inspectionProfiles/Project_Default.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions week8/week8/.idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 26 additions & 0 deletions week8/week8/.idea/libraries/KotlinJavaRuntime.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week8/week8/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions week8/week8/.idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions week8/week8/.idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

83 changes: 83 additions & 0 deletions week8/week8/src/main/kotlin/Main.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import java.util.LinkedList
import java.util.Queue
import java.util.Scanner
import java.util.StringTokenizer
import kotlin.properties.Delegates

lateinit var connected: Array<Array<Int>>
lateinit var dfsVisited: Array<Boolean>
lateinit var visited: Array<Array<Boolean>>
lateinit var apart: Array<Int>
val dx = arrayOf(0, 0, 1, -1)
val dy = arrayOf(1, -1, 0, 0)
var appartNum = 0
var N = 0


fun main() {
N = readLine()?.toInt() ?: return
val scanner = Scanner(System.`in`)
connected = Array(N){ Array(N) { 0 } }
visited = Array(N){ Array(N) { false } }
apart = Array(N*N){ 0 }

for(i in 0 until N){
val input = readLine()
for(j in 0 until N){
connected[i][j] = input?.get(j)?.toString()?.toInt() ?: 0
}
}

for(i in 0 until N){
for(j in 0 until N){
if(connected[i][j] == 1 && !visited[i][j]){
appartNum++
BFS(i, j)
}
}
}

apart.sort()
println("$appartNum")

apart.forEach { v->
if(v != 0) println(v)
}

}

fun BFS(x : Int, y : Int){
val q: Queue<IntArray> = LinkedList()
q.add(intArrayOf(x, y))
visited[x][y] = true
apart[appartNum]++

while(!q.isEmpty()){
val curX = q.peek()[0]
val curY = q.peek()[1]
q.poll()

for(i in 0 until 4){
val nx = curX + dx[i]
val ny = curY + dy[i]

if(nx >= 0 && ny >= 0 && nx < N && ny < N){
if(connected[nx][ny] == 1 && !visited[nx][ny]){
q.add(intArrayOf(nx, ny))
visited[nx][ny] = true
apart[appartNum]++
}
}
}
}
}
fun DFS(s : Int){
if(dfsVisited[s]) return
dfsVisited[s] = true
print("$s ")

connected[s].forEach { next->
DFS(next)
}

}
15 changes: 15 additions & 0 deletions week8/week8/week8.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/kotlin" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/kotlin" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="KotlinJavaRuntime" level="project" />
</component>
</module>