Phong tỏa

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Một đất nước có \(n\) thành phố, các thành phố được đánh số từ \(1\) đến \(n\). Từ thành phố \(i\) đến thành phố \(j\) có một con đường với độ dài \(d_{ij}\). Một trùm khủng bố vừa vượt ngục và theo thông tin khoanh vùng thì trùm khủng bố đang ở thành phố \(1\). Với lực lượng mỏng, cảnh sát chỉ có thể phong tỏa được một con đường.

Gọi \(l_i, l_{i}'\) tương ứng là độ dài đường đi ngắn nhất từ thành phố \(1\) đến thành phố \(i\) (\(i = 2, 3, \dots, n\)) trước và sau khi cảnh sát phong tỏa một con đường. Cảnh sát muốn lựa chọn một con đường để phong tỏa sao cho số lượng thành phố thỏa mãn \(l_{i}' > l_i\) là nhiều nhất.

Input

  • Dòng đầu chứa số nguyên dương \(n\).
  • Tiếp theo là \(n\) dòng, mỗi dòng chứa \(n\) số nguyên mô tả ma trận kề biểu diễn độ dài các con đường. Giá trị \(-1\) mô tả không có đường nối, \(0\) cho đường chéo, các số còn lại không vượt quá \(10^9\).

Output

  • Gồm một dòng duy nhất chứa một số nguyên là số lượng \(l_{i}' > l_i\) nhiều nhất tìm được.

Example

Test 1

Input
3
0 1 5
1 0 2
1 2 0
Output
2

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(n \le 50\).
  • Subtask \(2\) (\(50\%\) số điểm): \(n \le 500\).

Nguồn: 3D'21

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.