{"id":9024,"date":"2019-01-03T14:14:55","date_gmt":"2019-01-03T12:14:55","guid":{"rendered":"http:\/\/www.fandroid.info\/?page_id=9024"},"modified":"2021-04-25T18:55:36","modified_gmt":"2021-04-25T15:55:36","slug":"8-5-osnovy-kotlin-grafy","status":"publish","type":"page","link":"https:\/\/www.fandroid.info\/8-5-osnovy-kotlin-grafy\/","title":{"rendered":"8.5. \u041e\u0441\u043d\u043e\u0432\u044b Kotlin. \u0413\u0440\u0430\u0444\u044b"},"content":{"rendered":"\r\n
\r\n
\u041f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0439 \u0443\u0440\u043e\u043a<\/a><\/div>\r\n<\/figure>\r\n\r\n\r\n\r\n

\u0413\u0440\u0430\u0444\u2009\u2014\u2009\u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f, \u0438\u043c\u0435\u044e\u0449\u0430\u044f, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043e\u0447\u0435\u043d\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0413\u0440\u0430\u0444 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445\u00a0\u0432\u0435\u0440\u0448\u0438\u043d<\/em>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0438\u00a0\u0440\u0451\u0431\u0435\u0440<\/em>(\u0434\u0440\u0443\u0433\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0431\u0440\u0430\u2009\u2014\u2009\u0434\u0443\u0433\u0430<\/em>), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442. \u041f\u0440\u0438\u043c\u0435\u0440 \u0433\u0440\u0430\u0444\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435.<\/p>\r\n\r\n\r\n\r\n

\"333px<\/a><\/figure>\r\n\r\n\r\n\r\n

\u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0433\u0440\u0430\u0444\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0445\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0443\u0437\u043b\u043e\u0432 \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u0443\u043d\u043a\u0442\u043e\u0432 \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043c\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438. \u0422\u0438\u043f\u0438\u0447\u043d\u0430\u044f \u0440\u0435\u0448\u0430\u0435\u043c\u0430\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0440\u0430\u0444\u0430 \u0437\u0430\u0434\u0430\u0447\u0430\u2009\u2014\u2009\u043f\u043e\u0438\u0441\u043a \u043a\u0440\u0430\u0442\u0447\u0430\u0439\u0448\u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0443\u043d\u043a\u0442\u0430 \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0433\u0440\u0430\u0444, \u043f\u043e\u043c\u0438\u043c\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0432\u043e\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d \u0438 \u0440\u0451\u0431\u0440\u0430\u0445, \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0441\u0445\u0435\u043c\u044b \u0434\u043e\u0440\u043e\u0433 \u0435\u0439 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0433\u043e\u0440\u043e\u0434\u043e\u0432, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c \u0433\u0440\u0430\u0444\u0430, \u0438\u043b\u0438 \u0434\u043b\u0438\u043d\u044b \u0434\u043e\u0440\u043e\u0433, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0451\u0431\u0440\u0430\u043c \u0433\u0440\u0430\u0444\u0430. \u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\r\n\r\n\r\n\r\n

\"086<\/a><\/figure>\r\n\r\n\r\n\r\n

\u0421\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445,\u00a0\u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435<\/em>\u00a0\u0433\u0440\u0430\u0444\u0430\u043c, \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0442\u044c \u0432 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u043f\u043e\u0438\u0441\u043a\u0430 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432\u00a0lesson8\/task2<\/code>\u00a0\u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043e \u043f\u043e\u0438\u0441\u043a\u0435 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0442\u0440\u0430\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u044f. \u042d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0433\u0440\u0430\u0444\u0430, \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u043b\u0435\u0442\u043a\u0438 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0439 \u0434\u043e\u0441\u043a\u0438, \u0430 \u0440\u0451\u0431\u0440\u0430 \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442 \u0442\u0435 \u0438\u0437 \u043d\u0438\u0445, \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u044c. \u0422\u0430\u043a\u043e\u0439 \u0433\u0440\u0430\u0444 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a:<\/p>\r\n\r\n\r\n\r\n

\"1024px<\/a><\/figure>\r\n\r\n\r\n\r\n

\u041e\u043f\u0438\u0441\u0430\u0442\u044c \u0433\u0440\u0430\u0444 \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0412 \u0442\u043e\u0439 \u0436\u0435 \u0437\u0430\u0434\u0430\u0447\u0435 \u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0435 \u0448\u0430\u0445\u043c\u0430\u0442\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u044f \u043b\u0443\u0447\u0448\u0435 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0433\u0440\u0430\u0444\u0430, \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0438\u0448\u044c \u0443\u043c\u0435\u0442\u044c \u043f\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043a\u043b\u0435\u0442\u043a\u0435 \u043d\u0430\u0439\u0442\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043d\u0435\u0439 \u0440\u0435\u0431\u0440\u043e\u043c\u2009\u2014\u2009\u0442\u043e \u0435\u0441\u0442\u044c, \u0442\u0435 \u043a\u043b\u0435\u0442\u043a\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043b\u0435\u0442\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u044b\u0433\u043d\u0443\u0442\u044c \u043a\u043e\u043d\u044c. \u0412 \u0434\u0440\u0443\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447\u0430\u0445, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0438 \u0440\u0451\u0431\u0440\u0430\u0445 \u0433\u0440\u0430\u0444\u0430 \u0435\u0441\u0442\u044c \u0441\u043c\u044b\u0441\u043b \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0438 \u0442\u043e\u0433\u0434\u0430 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439\u00a0\u043a\u043b\u0430\u0441\u0441<\/em>. \u041f\u0440\u0438\u043c\u0435\u0440 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0430\u043a\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043d\u0438\u0436\u0435.<\/p>\r\n\r\n\r\n\r\n

class Graph {\r\n    private data class Vertex(val name: String) {\r\n        val neighbors = mutableSetOf<Vertex>()\r\n    }\r\n\r\n    private val vertices = mutableMapOf<String, Vertex>()\r\n\r\n    private operator fun get(name: String) = vertices[name] ?: throw IllegalArgumentException()\r\n\r\n    fun addVertex(name: String) {\r\n        vertices[name] = Vertex(name)\r\n    }\r\n\r\n    private fun connect(first: Vertex, second: Vertex) {\r\n        first.neighbors.add(second)\r\n        second.neighbors.add(first)\r\n    }\r\n\r\n    fun connect(first: String, second: String) = connect(this[first], this[second])\r\n\r\n    fun neighbors(name: String) = vertices[name]?.neighbors?.map { it.name } ?: listOf()\r\n}<\/pre>\r\n\r\n\r\n\r\n

\u041e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0437\u0434\u0435\u0441\u044c\u00a0Graph<\/code>\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c. \u041e\u043d \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0addVertex<\/code>\u00a0(\u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u0443) \u0438 \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0connect<\/code>\u00a0(\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c) \u0441 \u0440\u0430\u0437\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432, \u043f\u0440\u0438\u0447\u0451\u043c \u043e\u0434\u043d\u0430 \u0438\u0437 \u043d\u0438\u0445 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f\u00a0\u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0439<\/em>(private). \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0432\u0435\u0440\u0448\u0438\u043d, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0434\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439, \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0neighbors<\/code>, \u041a\u0440\u043e\u043c\u0435 \u044d\u0442\u043e\u0433\u043e, \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f\u00a0\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043d\u0430\u044f<\/em>\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0get<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0439,\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e<\/em>\u00a0(val)\u00a0vertices<\/code>\u00a0(\u0432\u0435\u0440\u0448\u0438\u043d\u044b), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432 (MutableMap) \u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043e\u043f\u044f\u0442\u044c-\u0442\u0430\u043a\u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u043e, \u0438\u00a0\u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0439<\/em>\u00a0\u043a\u043b\u0430\u0441\u0441\u00a0Vertex<\/code>(\u0432\u0435\u0440\u0448\u0438\u043d\u0430) \u0441\u043e \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u043c\u0438\u00a0name<\/code>\u00a0(\u0438\u043c\u044f) \u0438\u00a0neighbors<\/code>\u00a0(\u0441\u043e\u0441\u0435\u0434\u0438). \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u0441\u0435 \u044d\u0442\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043a\u043b\u0430\u0441\u0441\u0430\u00a0Graph<\/code>\u00a0\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435.<\/p>\r\n\r\n\r\n\r\n

<\/p>\r\n\r\n\r\n\r\n

\u0427\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430<\/h2>\r\n\r\n\r\n\r\n

\u041a\u043b\u0430\u0441\u0441 \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u043b\u0435\u043d\u043e\u0432 (members), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u0435\u043b\u044f\u0442\u0441\u044f \u043d\u0430 \u0434\u0432\u0435 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438:\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430<\/em>\u00a0\u0438\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u0438<\/em>. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a\u00a0val<\/strong>\u00a0(\u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435) \u0438\u043b\u0438\u00a0var<\/strong>\u00a0(\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u0435). \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u043a\u043b\u0430\u0441\u0441\u0430; \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u043b\u0430\u0441\u0441\u0435\u00a0Graph<\/code>\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u00a0vertices<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0433\u0440\u0430\u0444\u0430, \u0430 \u0432 \u043a\u043b\u0430\u0441\u0441\u0435\u00a0Vertex<\/code>\u00a0\u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u00a0neighbors<\/code>\u00a0\u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 (\u0442\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0445 \u0440\u0435\u0431\u0440\u043e\u043c) \u0441 \u0434\u0430\u043d\u043d\u043e\u0439.<\/p>\r\n\r\n\r\n\r\n

\u0424\u0443\u043d\u043a\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u043a\u0430\u043a\u00a0fun<\/strong>\u00a0\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u0441 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u043c \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u2009\u2014\u2009\u0441 \u0433\u0440\u0430\u0444\u043e\u043c. \u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0connect<\/code>\u00a0\u0441\u043b\u0443\u0436\u0430\u0442 \u0434\u043b\u044f \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0434\u0432\u0443\u0445 \u0432\u0435\u0440\u0448\u0438\u043d \u0433\u0440\u0430\u0444\u0430 \u0440\u0435\u0431\u0440\u043e\u043c\u2009\u2014\u2009\u0442\u043e \u0435\u0441\u0442\u044c, \u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0433\u0440\u0430\u0444 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0431\u0440\u0430. \u0424\u0443\u043d\u043a\u0446\u0438\u044f\u00a0addVertex<\/code>\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0433\u0440\u0430\u0444 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u0443.<\/p>\r\n\r\n\r\n\r\n

\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c<\/h2>\r\n\r\n\r\n\r\n

\u0427\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e\u00a0\u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c<\/em>. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0432 \u041a\u043e\u0442\u043b\u0438\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438: \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 (public, \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e) \u0438 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 (private). \u0414\u043b\u044f \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0443\u0440\u043e\u0432\u043d\u044f \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u00a0public<\/strong>\u00a0\u0438\u043b\u0438\u00a0private<\/strong>\u00a0\u043f\u0435\u0440\u0435\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u043c \u0447\u043b\u0435\u043d\u0430 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\r\n\r\n\r\n\r\n

\u041e\u0442\u043a\u0440\u044b\u0442\u044b\u0435 \u0447\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u0441\u0435\u043c\u0438. \u0412 \u043b\u044e\u0431\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043f\u0440\u0430\u0432\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00a0graph.connect(\u2026\u200b)<\/code>\u00a0\u0434\u043b\u044f \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0433\u0440\u0430\u0444 \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0435\u0431\u0440\u0430. \u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0447\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c; \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c\u00a0graph.vertices<\/code>\u00a0\u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043a \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0443\u00a0vertices<\/code>\u00a0\u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 \u043f\u0440\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b.<\/p>\r\n\r\n\r\n\r\n

\u0417\u0430\u043a\u0440\u044b\u0442\u044b\u0435 \u0447\u043b\u0435\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u0430 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0430\u043c\u0438, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u0440\u0430\u0437\u043d\u044b\u0435 \u0443\u0447\u0430\u0441\u0442\u043a\u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b. \u0414\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043f\u0440\u0438\u043d\u0446\u0438\u043f: \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0441\u0430\u043c \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0432\u043e\u0451 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435. \u0412 \u0438\u0434\u0435\u0430\u043b\u0435, \u043d\u0438\u043a\u0430\u043a\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0447\u043b\u0435\u043d\u0430\u043c\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u044c \u043a \u043e\u0448\u0438\u0431\u043a\u0430\u043c, \u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 \u0434\u043e\u043b\u0436\u043d\u043e \u043c\u0435\u043d\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\r\n\r\n\r\n\r\n

fun useGraph() {\r\n    val g = Graph()\r\n    g.addVertex(\"A\")\r\n    g.addVertex(\"B\")\r\n    g.addVertex(\"C\")\r\n    g.addVertex(\"D\")\r\n    g.connect(\"A\", \"C\")\r\n    g.connect(\"B\", \"D\")\r\n    g.connect(\"B\", \"C\")\r\n    println(g.neighbors(\"B\"))\r\n}\r\n\/\/ \u0414\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0433\u0440\u0430\u0444\r\n\/\/ A ----- C\r\n\/\/         |\r\n\/\/         |\r\n\/\/ D ----- B\r\n\/\/ println \u0432\u044b\u0432\u0435\u0434\u0435\u0442: [\"C\", \"B\"]<\/pre>\r\n\r\n\r\n\r\n

\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u043d\u0430\u043f\u0438\u0441\u0430\u0432\u0448\u0438\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0useGraph<\/code>, \u0440\u0435\u0437\u043e\u043d\u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 \u0433\u0440\u0430\u0444\u0435\u00a0g<\/code>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u0442\u044b\u0440\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0438 \u0442\u0440\u0438 \u0440\u0435\u0431\u0440\u0430, \u0432\u044b\u0433\u043b\u044f\u0434\u044f\u044e\u0449\u0438\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0442\u0430\u043a, \u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043e \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043e\u0436\u0438\u0434\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432\u0435\u0440\u0448\u0438\u043d, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0441 «B», \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 \u0432\u0435\u0440\u0448\u0438\u043d «C» \u0438 «D». \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432\u00a0vertices<\/code>\u00a0(\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0438 \u0445\u0440\u0430\u043d\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u0445 \u0433\u0440\u0430\u0444\u0430), \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u043c \u0438 \u0435\u0433\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043d\u0438\u043a\u0442\u043e, \u043a\u0440\u043e\u043c\u0435 \u0434\u0440\u0443\u0433\u0438\u0445 \u0447\u043b\u0435\u043d\u043e\u0432 \u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\r\n\r\n\r\n\r\n

\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0437\u0434\u0435\u0441\u044c \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u044b \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442\u00a0\u0438\u043d\u043a\u0430\u043f\u0441\u0443\u043b\u044f\u0446\u0438\u0435\u0439<\/em>. \u0413\u0440\u0430\u0444 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u0434\u043e\u0431\u0435\u043d \u043a\u0430\u043f\u0441\u0443\u043b\u0435, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0435\u0441\u0442\u044c \u043a\u043d\u043e\u043f\u043a\u0438 «addVertex» \u0438 «connect» (\u0438\u0445 \u043d\u0430\u0436\u0430\u0442\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0433\u0440\u0430\u0444), \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u00a0neighbors<\/code>\u00a0(\u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442 \u0433\u0440\u0430\u0444). \u0412\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u0430\u043f\u0441\u0443\u043b\u044b \u0438 \u043d\u0435 \u0432\u0438\u0434\u043d\u043e \u0441\u043d\u0430\u0440\u0443\u0436\u0438; \u0437\u0430\u043a\u0440\u044b\u0442\u043e\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0433\u0440\u0430\u0444\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0433\u043e \u043b\u0438\u0447\u043d\u044b\u043c (\u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c) \u0434\u0435\u043b\u043e\u043c.<\/p>\r\n\r\n\r\n\r\n

\u0412\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b<\/h2>\r\n\r\n\r\n\r\n

\u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a, \u0447\u0442\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u0441\u043c\u044b\u0441\u043b\u0430 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430. \u0422\u0430\u043a \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0438 \u0432 \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435\u2009\u2014\u2009\u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430 \u0431\u0435\u0437 \u0433\u0440\u0430\u0444\u0430. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0441\u0441\u00a0Vertex<\/code>, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u0435, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f\u00a0\u0432\u043d\u0443\u0442\u0440\u0438<\/strong>\u00a0\u043a\u043b\u0430\u0441\u0441\u0430\u00a0Graph<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043b\u0430\u0441\u0441 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439, \u0442\u043e \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0Graph<\/code>. \u0415\u0441\u043b\u0438 \u0431\u044b \u043a\u043b\u0430\u0441\u0441\u00a0Vertex<\/code>\u00a0\u0431\u044b\u043b \u043e\u0442\u043a\u0440\u044b\u0442, \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0433\u0440\u0430\u0444\u0430 \u043a\u0430\u043a\u00a0Graph.Vertex<\/code>.<\/p>\r\n\r\n\r\n\r\n

\u0412 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u0430 \u0438\u043c\u0435\u0435\u0442 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e «\u0438\u043c\u044f» (name), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u0432 \u0435\u0451 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435, \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e «\u0441\u043e\u0441\u0435\u0434\u0438» (neighbors), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u0442 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0435\u00a0\u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e<\/em>\u00a0(MutableSet) \u0438\u0437 \u0434\u0440\u0443\u0433\u0438\u0445 \u0432\u0435\u0440\u0448\u0438\u043d. \u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0435\u0451 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u043f\u0443\u0441\u0442\u043e, \u043d\u043e \u0432\u044b\u0437\u043e\u0432\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0connect<\/code>\u00a0\u0438\u0437 \u0433\u0440\u0430\u0444\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u044e\u0442 \u0435\u0433\u043e.<\/p>\r\n\r\n\r\n\r\n

\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0438 \u0441\u043f\u0438\u0441\u043a\u0438<\/h2>\r\n\r\n\r\n\r\n

\u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u0445 \u043f\u043e\u0445\u043e\u0436\u0438 \u043d\u0430 \u0441\u043f\u0438\u0441\u043a\u0438, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u043e\u0442 \u043d\u0438\u0445. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u043a\u0430\u043a \u0438 \u0441\u043f\u0438\u0441\u043a\u0438, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0431\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432; \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432. \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f.<\/p>\r\n\r\n\r\n\r\n

\u0414\u043b\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043d\u0451\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430, \u0438\u043b\u0438 \u0436\u0435 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0446\u0438\u043a\u043b\u0430\u00a0for<\/strong>\u2009\u2014\u2009\u043e\u0431\u0435 \u044d\u0442\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0435\u0441\u0442\u044c \u0438 \u0443 \u0441\u043f\u0438\u0441\u043a\u043e\u0432. \u0414\u043b\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u00a0size<\/code>\u00a0\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0isEmpty()<\/code>,\u00a0isNotEmpty()<\/code>\u00a0\u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0435\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c\u2009\u2014\u2009\u0432\u0441\u0435 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0443 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0442\u043e\u0436\u0435 \u0438\u043c\u0435\u044e\u0442\u0441\u044f. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432 \u041a\u043e\u0442\u043b\u0438\u043d\u0435 \u0431\u044b\u0432\u0430\u044e\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438\u00a0Set<T><\/code>\u00a0\u043b\u0438\u0431\u043e \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438\u00a0MutableSet<T><\/code>.<\/p>\r\n\r\n\r\n\r\n

\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043d\u0435\u0442 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432? \u041d\u0435\u0442, \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043d\u0451\u043c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u00a0set[i]<\/code>\u2009\u2014\u2009\u043a\u0430\u043a \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f \u0437\u0430\u043f\u0438\u0441\u0438. \u0417\u0430\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0432 \u043d\u0451\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432\u00a0element in set<\/code>. \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0435\u0433\u043e \u0432\u0435\u0441\u044c, \u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0432 \u043d\u0451\u043c \u0431\u044b\u0441\u0442\u0440\u0435\u0435.<\/p>\r\n\r\n\r\n\r\n

\u0421\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0432 \u041a\u043e\u0442\u043b\u0438\u043d\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0439\u00a0setOf(\u2026\u200b)<\/code>\u00a0\u0438\u00a0mutableSetOf(\u2026\u200b)<\/code>.<\/p>\r\n\r\n\r\n\r\n

<\/p>\r\n\r\n\r\n\r\n

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438<\/h2>\r\n\r\n\r\n\r\n

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f<\/em>\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u043c \u043d\u0430\u0434\u0442\u0438\u043f\u043e\u043c \u043a\u0430\u043a \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430, \u0442\u0430\u043a \u0438 \u0441\u043f\u0438\u0441\u043a\u0430. \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u0442 \u0438\u0445 \u043e\u0431\u0449\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u0421\u043f\u0438\u0441\u043e\u043a, \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u0438\u043c\u0435\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u041c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e, \u043f\u043e\u043c\u0438\u043c\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438, \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b.<\/p>\r\n\r\n\r\n\r\n

\u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u00a0Collection<T><\/code>\u00a0\u0445\u0440\u0430\u043d\u0438\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043e\u0434\u043d\u043e\u0442\u0438\u043f\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b \u0442\u0438\u043f\u0430\u00a0T<\/code>. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f:<\/p>\r\n\r\n\r\n\r\n

    \r\n
  1. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (\u0440\u0430\u0437\u043c\u0435\u0440\u0430), \u043f\u0443\u0441\u0442\u043e\u0442\u044b, \u043d\u0435\u043f\u0443\u0441\u0442\u043e\u0442\u044b.<\/li>\r\n
  2. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (in).<\/li>\r\n
  3. \u0421\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u043c.<\/li>\r\n
  4. \u0414\u043b\u044f \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438\u00a0MutableCollection<T><\/code>, \u0442\u0430\u043a\u0436\u0435\u2009\u2014\u2009\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n

    \u041a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442\u0443 \u0431\u0435\u0437\u0440\u0430\u0437\u043b\u0438\u0447\u0435\u043d \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0432\u0438\u0434 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0438. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043c\u043d\u043e\u0433\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438, \u0443\u0436\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0435 \u043d\u0430\u043c \u0434\u043b\u044f \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u043d\u0430 \u0441\u0430\u043c\u043e\u043c \u0434\u0435\u043b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u0434\u043b\u044f \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439.<\/p>\r\n\r\n\r\n\r\n

    \u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b (\u043a\u0430\u0440\u0442\u044b)<\/h2>\r\n\r\n\r\n\r\n

    \u0410\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432<\/em>\u00a0(\u043e\u043d \u0436\u0435\u2009\u2014\u2009\u043a\u0430\u0440\u0442\u0430 \u0438\u043b\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044c)\u00a0Map<K, V><\/code>\u00a0\u043f\u043e\u0434\u043e\u0431\u0435\u043d \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0438\u043b\u0438, \u0432\u0435\u0440\u043d\u0435\u0435, \u0441\u043f\u0438\u0441\u043a\u0443. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0437\u0430\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043e\u0442 0 \u0434\u043e\u00a0list.size - 1<\/code>, \u0430 \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c \u0432 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u0441\u0451 \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u0422\u0438\u043f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0430 (\u043a\u043b\u044e\u0447\u0430) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c \u043a\u0430\u0440\u0442\u044b\u00a0K<\/code>, \u0430 \u0442\u0438\u043f \u0445\u0440\u0430\u043d\u0438\u043c\u044b\u0445 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439\u2009\u2014\u2009\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c\u00a0V<\/code>. \u0414\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430\u00a0vertices<\/code>, \u043a\u043b\u044e\u0447\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430\u00a0String<\/code>\u00a0(\u0438\u043c\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u044b), \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c\u2009\u2014\u2009\u0441\u0430\u043c\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u00a0Vertex<\/code>.<\/p>\r\n\r\n\r\n\r\n

    \u041a\u043b\u0430\u0441\u0441\u00a0Graph<\/code>\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043d\u0430\u0434\u00a0vertices<\/code>\u2009\u2014\u2009\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044e. \u0414\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u0430\u0440\u0442\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434\u00a0mapOf(\u2026\u200b)<\/code>\u00a0\u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u044b\u00a0Map<K, V><\/code>, \u043b\u0438\u0431\u043e\u00a0mutableMapOf(\u2026\u200b)<\/code>\u00a0\u0434\u043b\u044f \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0449\u0435\u0439 \u043a\u0430\u0440\u0442\u044b. \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0437\u043e\u0432\u0430:<\/p>\r\n\r\n\r\n\r\n

    val map = mapOf(\"John\" to 87, \"Mike\" to 41, \"Fred\" to 24)<\/pre>\r\n\r\n\r\n\r\n

    \u0422\u0430\u043a\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u043a\u0430\u0440\u0442\u0443 \u0442\u0438\u043f\u0430\u00a0Map<String, Int><\/code>, \u043a\u043b\u044e\u0447\u043e\u043c \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c\u2009\u2014\u2009\u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u041f\u043e \u043a\u043b\u044e\u0447\u0443 «John» \u043a\u0430\u0440\u0442\u0430 \u0445\u0440\u0430\u043d\u0438\u0442 \u0447\u0438\u0441\u043b\u043e 87 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0424\u0443\u043d\u043a\u0446\u0438\u044f\u00a0key to value<\/code>\u00a0\u0441\u043e\u0437\u0434\u0430\u0451\u0442\u00a0\u043f\u0430\u0440\u0443<\/em>\u00a0\u0438\u0437 \u043a\u043b\u044e\u0447\u0430 \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0430 \u0438\u0437 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043f\u0430\u0440 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f \u0441\u0430\u043c\u0430 \u043a\u0430\u0440\u0442\u0430.<\/p>\r\n\r\n\r\n\r\n

    \u0418\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u0430\u043a \u0438 \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043d\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u043f\u043e \u0442\u0438\u043f\u0443 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u043a\u0430\u0440\u0442\u044b. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c\u00a0vertices<\/code>\u00a0\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0442\u0440\u043e\u043a\u0430 (\u0438\u043c\u044f \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0435\u0439 \u043d\u0430\u0441 \u0432\u0435\u0440\u0448\u0438\u043d\u044b). \u0412 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u043a\u0430\u0440\u0442\u0435 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0442\u0430\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u043a\u043b\u044e\u0447\u0443, \u0430 \u0432 \u043c\u0443\u0442\u0438\u0440\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0443 \u0438\u0445 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c. \u0421\u043b\u0435\u0434\u0443\u0435\u0442 \u043e\u0442\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u043a\u043b\u044e\u0447\u0438 \u0432 \u043a\u0430\u0440\u0442\u0435 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f\u2009\u2014\u2009\u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043a\u0430\u0440\u0442\u0443 \u043d\u043e\u0432\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u0440\u043e\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043a\u043b\u044e\u0447\u0443.<\/p>\r\n\r\n\r\n\r\n

    \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u044b \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043f\u043e \u043d\u0435\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u043a\u043b\u044e\u0447\u0443, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0map[\"Tom\"]<\/code>\u00a0\u0434\u043b\u044f \u043a\u0430\u0440\u0442\u044b \u0438\u0437 \u043f\u0440\u0438\u043c\u0435\u0440\u0430. \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u043f\u0438\u0441\u043a\u0430, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f; \u043e\u0434\u043d\u0430\u043a\u043e, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0434\u0430\u043d\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438\u2009\u2014\u2009null<\/strong>. \u042d\u0442\u043e \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u0430\u044f \u043d\u0443\u043b\u0435\u0432\u0430\u044f \u0441\u0441\u044b\u043b\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u0436\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430\u0441\u044c \u043d\u0430\u043c \u0432 \u0448\u0435\u0441\u0442\u043e\u043c \u0443\u0440\u043e\u043a\u0435. \u0422\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435\u00a0Int?<\/code>, \u0447\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442\u00a0Int<\/code>\u00a0\u043b\u0438\u0431\u043e\u00a0null<\/strong>.<\/p>\r\n\r\n\r\n\r\n

    \u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438<\/h2>\r\n\r\n\r\n\r\n

    \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0neighbors()<\/code>\u00a0\u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430\u00a0Graph<\/code>:<\/p>\r\n\r\n\r\n\r\n

        fun neighbors(name: String) = vertices[name]?.neighbors?.map { it.name } ?: listOf()<\/pre>\r\n\r\n\r\n\r\n

    \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041a\u0430\u043a \u0443\u0436\u0435 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u043e\u0441\u044c \u0432\u044b\u0448\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u00a0vertices[name]<\/code>\u00a0\u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0443\u043b\u0435\u0432\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439, \u0442\u0438\u043f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0Vertex?<\/code>. \u0423 \u0442\u0438\u043f\u0430\u00a0Vertex<\/code>\u00a0(\u0431\u0435\u0437 ?) \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e\u00a0neighbors<\/code>; \u043e\u0434\u043d\u0430\u043a\u043e, \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043a\u0430\u043a\u00a0vertices[name].neighbors<\/code>\u00a0\u043d\u0435\u043b\u044c\u0437\u044f, \u0442\u0430\u043a \u043a\u0430\u043a\u00a0null<\/strong>\u00a0\u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043d\u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432, \u043d\u0438 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u043e\u0435\u00a0\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0435<\/em>\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435:\u00a0vertices[name]?.neighbors<\/code>. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0431\u0443\u0434\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430\u00a0neighbors<\/code>\u00a0\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0439 \u0438\u0437 \u043a\u0430\u0440\u0442\u044b \u0432\u0435\u0440\u0448\u0438\u043d\u044b; \u0435\u0441\u043b\u0438 \u0436\u0435 \u043a\u043b\u044e\u0447\u0430\u00a0name<\/code>\u00a0\u0432 \u043a\u0430\u0440\u0442\u0435 \u043d\u0435\u0442, \u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u043c\u0435\u0442\u044c\u00a0null<\/strong>\u00a0\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0435\u0442\u00a0null<\/strong>. \u0422\u0438\u043f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0vertices[name]?.neighbors<\/code>\u2009\u2014\u2009MutableSet<Vertex>?<\/code>.<\/p>\r\n\r\n\r\n\r\n

    \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043c\u044b \u0442\u0435\u043c \u0436\u0435 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432\u044b\u0441\u0448\u0435\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430\u00a0map<\/code>, \u0437\u0430\u043c\u0435\u0449\u0430\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0438\u0437 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0435\u0451 \u0438\u043c\u0435\u043d\u0435\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0441\u043f\u0438\u0441\u043e\u043a \u0438\u043c\u0451\u043d. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a\u00a0map<\/code>\u00a0\u0442\u043e\u0436\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437\u00a0?.<\/code>, \u0442\u043e \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441 \u0441\u0430\u043c\u043e\u0433\u043e \u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u043c\u0451\u043d \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c\u00a0null<\/strong>. \u0422\u0438\u043f \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u00a0vertices[name]?.neighbors?.map { it.name }<\/code>\u2009\u2014\u2009List<String>?<\/code>.<\/p>\r\n\r\n\r\n\r\n

    \u041d\u0430\u043a\u043e\u043d\u0435\u0446, \u0432 \u043a\u043e\u043d\u0446\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0439 \u042d\u043b\u0432\u0438\u0441-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440. \u042d\u043b\u0432\u0438\u0441-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u043c\u0435\u0435\u0442 \u0434\u0432\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440,\u00a0a ?: b<\/code>\u00a0\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0442\u0430\u043a:<\/p>\r\n\r\n\r\n\r\n

      \r\n
    1. \u0415\u0441\u043b\u0438\u00a0a<\/code>\u00a0\u043d\u0435\u00a0null<\/strong>, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u042d\u043b\u0432\u0438\u0441-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0440\u0430\u0432\u0435\u043d\u00a0a<\/code>.<\/li>\r\n
    2. \u0415\u0441\u043b\u0438\u00a0a<\/code>\u00a0null<\/strong>, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u042d\u043b\u0432\u0438\u0441-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0440\u0430\u0432\u0435\u043d\u00a0b<\/code>.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n

      \u0412 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0441\u00a0neighbors<\/code>\u00a0\u0438 \u0432 \u0442\u043e\u043c \u0438 \u0432 \u0434\u0440\u0443\u0433\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u0438\u043f\u0430\u00a0List<String><\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0438 \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u043c\u0435\u0435\u0442 \u0442\u0438\u043f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u00a0List<String><\/code>.<\/p>\r\n\r\n\r\n\r\n

      <\/p>\r\n\r\n\r\n\r\n

      \u041f\u0435\u0440\u0435\u0433\u0440\u0443\u0437\u043a\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432<\/h2>\r\n\r\n\r\n\r\n

      \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0442 \u044d\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435:<\/p>\r\n\r\n\r\n\r\n

      private operator fun get(name: String) = vertices[name] ?: throw IllegalArgumentException()<\/pre>\r\n\r\n\r\n\r\n

      \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e\u00a0operator<\/strong>\u00a0\u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0435\u0440\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 (\u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0430\u0435\u0442) \u0440\u0430\u0431\u043e\u0442\u0443 \u0442\u043e\u0433\u043e \u0438\u043b\u0438 \u0438\u043d\u043e\u0433\u043e \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430. \u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0432 \u041a\u043e\u0442\u043b\u0438\u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u0424\u0443\u043d\u043a\u0446\u0438\u0438\u00a0get<\/code>\u00a0\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438, \u0442\u043e \u0435\u0441\u0442\u044c, \u0438\u043c\u0435\u044f \u0433\u0440\u0430\u0444\u00a0g<\/code>, \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0434\u043e\u0441\u0442\u0430\u0442\u044c \u0443 \u043d\u0435\u0433\u043e \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0g[name]<\/code>.<\/p>\r\n\r\n\r\n\r\n

      \u0412 \u0442\u0435\u043b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043c\u044b \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u043a\u0430\u0440\u0442\u0435\u00a0vertices<\/code>, \u043f\u043e\u043b\u0443\u0447\u0430\u044f \u0438\u0437 \u043d\u0435\u0451\u00a0Vertex?<\/code>. \u0414\u0430\u043b\u0435\u0435 \u0432\u043d\u043e\u0432\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u042d\u043b\u0432\u0438\u0441-\u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440, \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435, \u043f\u0440\u0435\u043a\u0440\u0430\u0449\u0430\u044e\u0449\u0435\u0435 \u0440\u0430\u0431\u043e\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u00a0null<\/strong>\u00a0\u0432 \u0441\u043b\u0443\u0447\u0430\u0435, \u043a\u043e\u0433\u0434\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u043d\u0435\u0442 \u0432 \u043a\u0430\u0440\u0442\u0435, \u0431\u0440\u043e\u0441\u0430\u0435\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u00a0IllegalArgumentException<\/code>. \u0417\u0430\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f\u00a0Vertex<\/code>\u00a0(\u0431\u0435\u0437 ?).<\/p>\r\n\r\n\r\n\r\n

      \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0444\u0440\u0430\u0433\u043c\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u0435\u0440\u0435\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u0438:<\/p>\r\n\r\n\r\n\r\n

      fun connect(first: String, second: String) = connect(this[first], this[second])<\/pre>\r\n\r\n\r\n\r\n

      \u0414\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e\u00a0connect<\/code>\u2009\u2014\u2009\u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438 \u0442\u0438\u043f\u0430\u00a0Vertex<\/code>\u00a0\u0432\u043c\u0435\u0441\u0442\u043e\u00a0String<\/code>. \u0414\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043c\u0435\u043d\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b\u00a0first<\/code>\u00a0\u043a \u0441\u0430\u043c\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f\u00a0this[first]<\/code>.\u00a0this<\/strong>\u00a0\u0437\u0434\u0435\u0441\u044c\u2009\u2014\u2009\u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e (\u044d\u0442\u043e\u0442), \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0435\u0435 \u0433\u0440\u0430\u0444-\u043f\u043e\u043b\u0443\u0447\u0430\u0442\u0435\u043b\u044c, \u0442\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u0442 \u0433\u0440\u0430\u0444, \u0434\u043b\u044f \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0connect<\/code>.\u00a0this[first]<\/code>\u00a0\u0432\u043c\u0435\u0441\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u0430\u0446\u0438\u044e \u043d\u0430 \u0433\u0440\u0430\u0444\u0435.<\/p>\r\n\r\n\r\n\r\n

      \u041f\u043e\u0438\u0441\u043a \u043d\u0430 \u0433\u0440\u0430\u0444\u0435<\/h2>\r\n\r\n\r\n\r\n

      \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u043f\u043e\u0438\u0441\u043a\u0430 \u043d\u0430 \u0433\u0440\u0430\u0444\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u0443\u044e \u0446\u0435\u043b\u044c. \u041c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0438\u0445 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438. \u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438\u00a0A<\/code>\u00a0\u0438\u00a0B<\/code>\u00a0\u043d\u0430 \u0433\u0440\u0430\u0444\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0440\u0451\u0431\u0435\u0440, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0438\u0437\u00a0A<\/code>\u00a0\u0432\u00a0B<\/code>. \u0421\u043c. \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\r\n\r\n\r\n\r\n

      \"512px<\/a><\/figure>\r\n\r\n\r\n\r\n

      \u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438 A \u0438 B \u0440\u0430\u0432\u043d\u043e 1, \u043c\u0435\u0436\u0434\u0443 A \u0438 E\u2009\u2014\u20092, \u043c\u0435\u0436\u0434\u0443 C \u0438 F\u2009\u2014\u20093.<\/p>\r\n\r\n\r\n\r\n

      \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0432 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u0441\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0440\u0451\u0431\u0435\u0440, \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0435\u00a0A<\/code>, \u043d\u0430\u0439\u0442\u0438 \u0442\u0435 \u0438\u0437 \u043d\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0432\u00a0B<\/code>\u00a0\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0430\u043c\u0443\u044e \u043a\u043e\u0440\u043e\u0442\u043a\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443. \u0415\u0441\u0442\u044c \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u044f \u0442\u0430\u043a\u0438\u0445 \u0446\u0435\u043f\u043e\u0447\u0435\u043a\u2009\u2014\u2009\u043f\u043e\u0438\u0441\u043a \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u0438 \u043f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443.<\/p>\r\n\r\n\r\n\r\n

      \u041f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043c\u044b \u043e\u0442 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0435\u0451 \u0441\u043e\u0441\u0435\u0434\u043e\u043a, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044f \u0432\u0441\u0451 \u0431\u043e\u043b\u0435\u0435 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0446\u0435\u043f\u043e\u0447\u043a\u0443. \u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0451\u043c \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0443\u00a0B<\/code>, \u0438\u043b\u0438 \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0451\u043c \u0432 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0443\u0436\u0435 \u0438\u043c\u0435\u044e\u0449\u0438\u0445\u0441\u044f \u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0432\u0435\u0440\u0448\u0438\u043d, \u043e\u0431\u0440\u0430\u0437\u0443\u044f \u043a\u043e\u043b\u044c\u0446\u043e. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043f\u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043d\u0430 \u0448\u0430\u0433 \u043d\u0430\u0437\u0430\u0434 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u0446\u0435\u043f\u043e\u0447\u043a\u0438\u2009\u2014\u2009\u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435.<\/p>\r\n\r\n\r\n\r\n

      \u041f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 \u0438\u0434\u0451\u0442 «\u0432\u043e\u043b\u043d\u0430\u043c\u0438». \u0412\u043d\u0430\u0447\u0430\u043b\u0435 \u043c\u044b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435\u0445 \u0441\u043e\u0441\u0435\u0434\u043e\u043a \u0432\u0435\u0440\u0448\u0438\u043d\u044b\u00a0A<\/code>, \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445 (1). \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u0435\u0445 \u0441\u043e\u0441\u0435\u0434\u043e\u043a \u0441\u043e\u0441\u0435\u0434\u043e\u043a \u0432\u0435\u0440\u0448\u0438\u043d\u044b\u00a0A<\/code>, \u0438\u043c\u0435\u044f \u0443\u0436\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0432 2 \u0440\u0435\u0431\u0440\u0430. \u0417\u0430\u0442\u0435\u043c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0435\u0440\u0448\u0438\u043d \u043d\u0430 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0438 3 \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435, \u043f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435 \u0443\u0442\u043a\u043d\u0451\u043c\u0441\u044f \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0443\u00a0B<\/code>.<\/p>\r\n\r\n\r\n\r\n

      \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443<\/h3>\r\n\r\n\r\n\r\n

      DFS = Depth-First Search.<\/p>\r\n\r\n\r\n\r\n

      fun dfs(start: String, finish: String): Int = dfs(this[start], this[finish], setOf()) ?: -1\r\n\r\n    private fun dfs(start: Vertex, finish: Vertex, visited: Set<Vertex>): Int? =\r\n            if (start == finish) 0\r\n            else {\r\n                val min = start.neighbors\r\n                        .filter { it !in visited }\r\n                        .mapNotNull { dfs(it, finish, visited + start) }\r\n                        .min()\r\n                if (min == null) null else min + 1\r\n            }<\/pre>\r\n\r\n\r\n\r\n

      \u041f\u043e\u0438\u0441\u043a \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e, \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b:<\/p>\r\n\r\n\r\n\r\n

        \r\n
      1. \u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u043b\u044e\u0431\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0434\u043e \u0441\u0430\u043c\u043e\u0439 \u0441\u0435\u0431\u044f \u0440\u0430\u0432\u043d\u043e 0.<\/li>\r\n
      2. \u041f\u0443\u0441\u0442\u044c\u00a0N(A)<\/code>\u2009\u2014\u2009\u0432\u0441\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0441 A. \u0422\u043e\u0433\u0434\u0430\u00a0distance(A, B) = min(distance(N, B)) + 1<\/code>, \u0433\u0434\u0435 \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0441\u0440\u0435\u0434\u0438 \u0432\u0441\u0435\u0445 \u0432\u0435\u0440\u0448\u0438\u043d\u00a0N<\/code>, \u0432\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0432\u00a0N(A)<\/code>.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n

        \u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u044d\u0442\u0438\u0445 \u043f\u0440\u0430\u0432\u0438\u043b \u043c\u043e\u0433\u043b\u0430 \u0431\u044b \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0432\u043e\u0442 \u0442\u0430\u043a:<\/p>\r\n\r\n\r\n\r\n

        private fun dfs(start: Vertex, finish: Vertex): Int? =\r\n        if (start == finish) 0\r\n        else {\r\n            val min = start.neighbors.mapNotNull { dfs(it, finish) }.min()\r\n            if (min == null) null else min + 1\r\n        }<\/pre>\r\n\r\n\r\n\r\n

        \u041f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0440\u0430\u0432\u0435\u043d\u00a0null<\/strong>\u00a0\u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u0432\u0435\u0440\u0448\u0438\u043d\u0430\u043c\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0443 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u043d\u0435\u0442 \u0441\u043e\u0441\u0435\u0434\u0435\u0439). \u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u044b\u0441\u0448\u0435\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430\u00a0mapNotNull<\/code>\u00a0\u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u00a0dfs<\/code>\u00a0\u043d\u0430 \u0432\u0441\u0435\u0445 \u0441\u043e\u0441\u0435\u0434\u044f\u0445 \u0438 \u0444\u0438\u043b\u044c\u0442\u0440\u0443\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b, \u0443\u0434\u0430\u043b\u044f\u044f \u0438\u0437 \u043d\u0438\u0445 \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0432\u043d\u044b\u0435\u00a0null<\/strong>. \u0412\u044b\u0437\u043e\u0432\u00a0mapNotNull<\/code>\u00a0\u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u043a\u0432\u0438\u0432\u0430\u043b\u0435\u043d\u0442\u0435\u043d \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0437\u043e\u0432\u043e\u0432\u00a0map { dfs(it, finish) }.filterNotNull()<\/code>.<\/p>\r\n\r\n\r\n\r\n

        \u041f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u043a \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e\u00a0StackOverflowException<\/code>\u00a0\u0438\u0437-\u0437\u0430 \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0439 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0438\u043c\u0435\u044e\u0449\u0430\u044f\u0441\u044f \u0441\u0445\u0435\u043c\u0430 \u043d\u0435 \u043f\u0440\u0435\u043f\u044f\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430\u043c \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0445\u043e\u0434\u0438\u0442\u044c \u0438\u0437 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u044e\u044e \u043a \u043d\u0435\u0439 \u0438 \u043e\u0431\u0440\u0430\u0442\u043d\u043e.<\/p>\r\n\r\n\r\n\r\n

        \u0418\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0431\u044b\u043b\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0436\u0435 \u043f\u043e\u0441\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d (\u0442\u0440\u0435\u0442\u044c\u0438\u043c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c, \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043e\u043d \u043f\u0443\u0441\u0442). \u0423\u0436\u0435 \u043f\u043e\u0441\u0435\u0449\u0451\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0441\u043e\u0441\u0435\u0434\u0435\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0filter { it !in visited }<\/code>, \u0430 \u043f\u0440\u0438 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0432\u043d\u043e\u043c \u0432\u044b\u0437\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432 \u044d\u0442\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u043f\u043e\u0441\u0435\u0449\u0451\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430. \u042d\u0442\u043e \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0438\u0441\u043a\u0430.<\/p>\r\n\r\n\r\n\r\n

        \u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0448\u0438\u0440\u0438\u043d\u0443<\/h3>\r\n\r\n\r\n\r\n

        BFS = Breadth-First Search.<\/p>\r\n\r\n\r\n\r\n

        fun bfs(start: String, finish: String) = bfs(this[start], this[finish])\r\n\r\nprivate fun bfs(start: Vertex, finish: Vertex): Int {\r\n    val queue = ArrayDeque<Vertex>()\r\n    queue.add(start)\r\n    val visited = mutableMapOf(start to 0)\r\n    while (queue.isNotEmpty()) {\r\n        val next = queue.poll()\r\n        val distance = visited[next]!!\r\n        if (next == finish) return distance\r\n        for (neighbor in next.neighbors) {\r\n            if (neighbor in visited) continue\r\n            visited.put(neighbor, distance + 1)\r\n            queue.add(neighbor)\r\n        }\r\n    }\r\n    return -1\r\n}<\/pre>\r\n\r\n\r\n\r\n

        \u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0432\u0435\u0440\u0448\u0438\u043d\u00a0ArrayQueue<Vertex><\/code>. \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043e\u0434\u043e\u0431\u0435\u043d \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432 \u043c\u0430\u0433\u0430\u0437\u0438\u043d\u0435\u2009\u2014\u2009\u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0queue.add<\/code>\u00a0\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u0443-\u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442 \u0432 \u043a\u043e\u043d\u0435\u0446 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 (\u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043d\u0430 1), \u0430 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438\u00a0queue.poll<\/code>, \u043d\u0430\u043e\u0431\u043e\u0440\u043e\u0442, \u0434\u043e\u0441\u0442\u0430\u0451\u0442 \u0438\u0437 \u0433\u043e\u043b\u043e\u0432\u044b \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u0435\u0440\u0432\u0443\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u0443 (\u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044f \u0440\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 1). \u0414\u043b\u044f \u043f\u0443\u0441\u0442\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u00a0queue.poll<\/code>\u00a0\u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u0435\u043d\u00a0null<\/strong>. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430.<\/p>\r\n\r\n\r\n\r\n

        \u0414\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0439 \u0434\u043e \u0443\u0436\u0435 \u043f\u043e\u0441\u0435\u0449\u0451\u043d\u043d\u044b\u0445 \u0432\u0435\u0440\u0448\u0438\u043d \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043c\u0430\u0441\u0441\u0438\u0432, \u043a\u043b\u044e\u0447\u043e\u043c \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0435\u0440\u0448\u0438\u043d\u0430, \u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c\u2009\u2014\u2009\u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043d\u0435\u0451. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u043d\u0430\u043c \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0447\u0442\u043e \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043e\u0442 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0434\u043e \u043d\u0435\u0451 \u0436\u0435 \u0440\u0430\u0432\u043d\u043e 0.<\/p>\r\n\r\n\r\n\r\n

        \u0414\u0430\u043b\u0435\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0451\u0442 \u0432\u0435\u0440\u0448\u0438\u043d\u0443 \u0438\u0437 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0438 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u043d\u0435\u0451 \u0438\u0437 \u043c\u0430\u0441\u0441\u0438\u0432\u0430. \u0412 \u0446\u0438\u043a\u043b\u0435 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0432\u0441\u0435 \u0432\u0435\u0440\u0448\u0438\u043d\u044b, \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0441 \u0434\u0430\u043d\u043d\u043e\u0439. \u041f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u0447\u0442\u043e \u0432 \u0432\u0435\u0440\u0448\u0438\u043d\u0435 \u043c\u044b \u0435\u0449\u0451 \u043d\u0435 \u0431\u044b\u043b\u0438, \u043f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043e\u043d\u0430 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c. \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0439 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0439 + 1. \u042d\u0442\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u0442\u0441\u044f \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u043c\u044b \u043d\u0435 \u043f\u043e\u043f\u0430\u0434\u0451\u043c \u0432 \u0438\u0441\u043a\u043e\u043c\u0443\u044e \u0432\u0435\u0440\u0448\u0438\u043d\u0443\u00a0finish<\/code>.<\/p>\r\n\r\n\r\n\r\n

        \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u00a0val distance = visited[next]!!<\/code>. \u0417\u0434\u0435\u0441\u044c\u00a0visited[next]<\/code>\u00a0\u043e\u0431\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u043a \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u043c\u0443 \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0438 \u0438\u043c\u0435\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u00a0Int?<\/code>\u00a0(Int<\/code>\u00a0\u0438\u043b\u0438\u00a0null<\/strong>). \u041c\u044b \u0436\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u00a0Int<\/code>. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0438 \u0437\u0430\u043f\u0438\u0441\u044c \u0440\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0434\u043b\u044f \u043d\u0435\u0451 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u0440\u0443\u0433 \u0437\u0430 \u0434\u0440\u0443\u0433\u043e\u043c, \u043c\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u00a0!!<\/code>\u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u0430 \u0438\u0437\u00a0Int?<\/code>\u00a0\u0432\u00a0Int<\/code>. \u0415\u0441\u043b\u0438 \u0432\u0441\u0451 \u0436\u0435 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043f\u043e \u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0438\u043d\u0434\u0435\u043a\u0441\u0443 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u043d\u0435\u0442, \u0432 \u044d\u0442\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u00a0KotlinNullPointerException<\/code>.<\/p>\r\n\r\n\r\n\r\n

        \r\n
        \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0443\u0440\u043e\u043a<\/a><\/div>\r\n<\/figure>\r\n","protected":false},"excerpt":{"rendered":"

        \u0413\u0440\u0430\u0444\u2009\u2014\u2009\u044d\u0442\u043e \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f, \u0438\u043c\u0435\u044e\u0449\u0430\u044f, \u0442\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043e\u0447\u0435\u043d\u044c \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0413\u0440\u0430\u0444 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u0430 \u0442\u0430\u043a \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0445\u00a0\u0432\u0435\u0440\u0448\u0438\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0430\u044e\u0442\u0441\u044f \u043a\u0430\u043a \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043f\u043b\u043e\u0441\u043a\u043e\u0441\u0442\u0438, \u0438\u00a0\u0440\u0451\u0431\u0435\u0440(\u0434\u0440\u0443\u0433\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0440\u0435\u0431\u0440\u0430\u2009\u2014\u2009\u0434\u0443\u0433\u0430), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u0438 \u0432\u0435\u0440\u0448\u0438\u043d\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0442. \u041f\u0440\u0438\u043c\u0435\u0440 \u0433\u0440\u0430\u0444\u0430 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u043d \u043d\u0430 \u0440\u0438\u0441\u0443\u043d\u043a\u0435. \u0427\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u0433\u0440\u0430\u0444\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0445\u0435\u043c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0443\u0437\u043b\u043e\u0432 \u0432 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438\u043b\u0438 \u0433\u043e\u0440\u043e\u0434\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 […]<\/p>\n","protected":false},"author":1,"featured_media":9000,"parent":0,"menu_order":29,"comment_status":"open","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/pages\/9024"}],"collection":[{"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/comments?post=9024"}],"version-history":[{"count":4,"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/pages\/9024\/revisions"}],"predecessor-version":[{"id":13004,"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/pages\/9024\/revisions\/13004"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/media\/9000"}],"wp:attachment":[{"href":"https:\/\/www.fandroid.info\/wp-json\/wp\/v2\/media?parent=9024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}