USACO 2013 - Message Relay
Xem PDF\(N\) con bò của Farmer John (\(1 \le N \le 1000\)) được đánh số thuận tiện từ \(1\) đến \(N\). Bằng một cơ chế liên lạc kiểu cũ dựa trên những chiếc lon thiếc và dây nối, những con bò đã tìm ra cách giao tiếp với nhau mà Farmer John không nhận ra.
Mỗi con bò có thể chuyển tiếp tin nhắn cho nhiều nhất một con bò khác: với bò thứ \(i\), giá trị \(F(i)\) cho biết chỉ số của con bò mà bò thứ \(i\) sẽ chuyển tiếp mọi tin nhắn nó nhận được đến (số này luôn khác \(i\)). Nếu \(F(i)\) bằng \(0\), bò thứ \(i\) không chuyển tiếp tin nhắn.
Thật không may, những con bò nhận ra rằng tin nhắn bắt nguồn từ một số con bò nhất định cuối cùng có thể bị mắc kẹt trong các vòng lặp, được chuyển tiếp mãi mãi theo một chu trình. Một con bò được gọi là "lặp" nếu tin nhắn được gửi từ con bò đó cuối cùng sẽ mắc kẹt trong một vòng lặp. Đàn bò muốn tránh gửi tin nhắn từ những con bò lặp. Hãy giúp chúng đếm tổng số bò của FJ không phải là bò lặp.
Dữ liệu vào
- Dòng đầu tiên chứa số lượng bò \(N\).
- \(N\) dòng tiếp theo: dòng thứ \(i\) chứa giá trị \(F(i)\).
Dữ liệu ra
In ra tổng số bò không phải là bò lặp.
Ví dụ
Ví dụ 1
Input
5
0
4
1
5
4
Output
2
Giải thích
Có \(5\) con bò. Bò \(1\) không chuyển tiếp tin nhắn. Bò \(2\) chuyển tiếp tin nhắn cho bò \(4\), và các con bò còn lại cũng lần lượt chuyển tiếp như trong dữ liệu vào.
Bò \(1\) không phải bò lặp vì nó không chuyển tiếp tin nhắn. Bò \(3\) cũng không phải bò lặp vì nó chuyển tiếp tin nhắn cho bò \(1\), rồi bò \(1\) không chuyển tiếp tin nhắn nữa. Tất cả các con bò khác đều là bò lặp.
Nguồn
USACO 2013 February Contest, Bronze — Problem 1: Message Relay
Tác giả đề: Brian Dean, 2013.
Kỳ thi:
- USACO 2013 - Tháng 2 - Hạng Đồng (1 Tháng 2., 2013)
Bình luận