package main import . "fmt" func main() { var n int Scan(&n) mat := make([][]int, n) for i := range mat { mat[i] = make([]int, n) for j := range mat[i] { Scan(&mat[i][j]) } } // 非退化性 for i := range mat { if mat[i][i] != 0 { Println("No") Println("No") return } } // 対称性 for i, ms := range mat { for j, v := range ms { if v != mat[j][i] { Println("No") Println("No") return } } } // 三角不等式 good := "Yes" for i, ms := range mat { for j, v := range ms { for k := 0; k < n; k++ { if v > mat[i][k]+mat[k][j] { good = "No" } } } } // 強三角不等式 verygood := "Yes" for i, ms := range mat { for j, v := range ms { for k := 0; k < n; k++ { if v > max(mat[i][k],mat[k][j]) { verygood = "No" } } } } Println(good) Println(verygood) }