-
Notifications
You must be signed in to change notification settings - Fork 0
/
10971.cpp
32 lines (32 loc) · 835 Bytes
/
10971.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.io.BufferedReader
import java.io.InputStreamReader
import java.lang.Integer.min
import java.util.*
var N=0
val cost = Array(10,{Array(10){0}})
val visit = Array(10){false}
var ans=987654321
fun sol(start:Int,n:Int,sum:Int,cnt:Int){
visit[n]=true
//println("n:${n}, sum:${sum}, cnt:${cnt}")
if(cnt==N && cost[n][start]>0){
ans=min(ans,sum+cost[n][start])
}
for(i in 0 until N){
if(cost[n][i]>0 && !visit[i]){
sol(start,i,sum+cost[n][i],cnt+1)
}
}
visit[n]=false
}
fun main() = with(BufferedReader(InputStreamReader(System.`in`))){
N=readLine().toInt()
for(i in 0 until N){
var ip = readLine().split(' ').map{it.toInt()}
for(j in 0 until N) cost[i][j]=ip[j]
}
for(i in 0 until N) {
sol(i,i, 0, 1)
}
println(ans)
}