USACO 2019 - Grass Planting

Xem PDF



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, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 (p) Thời gian: 4.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Đã đến thời điểm Farmer John gieo cỏ trên tất cả các cánh đồng của mình. Toàn bộ trang trại gồm \(N\) cánh đồng (\(1 \leq N \leq 10^5\)), được đánh số thuận tiện từ \(1 \ldots N\) và nối với nhau một cách thuận tiện bằng \(N-1\) lối đi hai chiều sao cho từ mọi cánh đồng đều có thể đến mọi cánh đồng khác qua một số lối đi.

Farmer John có thể gieo một loại cỏ khác nhau trên mỗi cánh đồng, nhưng ông muốn giảm thiểu tổng số loại cỏ sử dụng, vì càng dùng nhiều loại cỏ thì chi phí càng cao.

Thật không may, những con bò của ông đã trở nên khá kén chọn đối với các loại cỏ trong trang trại. Nếu cùng một loại cỏ được gieo trên hai cánh đồng kề nhau (được nối trực tiếp bằng một lối đi), hoặc thậm chí trên hai cánh đồng gần kề (cả hai đều được nối trực tiếp bằng các lối đi đến cùng một cánh đồng), các cô bò sẽ phàn nàn vì các lựa chọn ăn uống thiếu đa dạng. Với những trò nghịch ngợm mà chúng thường gây ra khi không hài lòng, điều cuối cùng Farmer John cần là những con bò phàn nàn.

Hãy giúp Farmer John xác định số loại cỏ tối thiểu cần dùng cho toàn bộ trang trại.

Dữ liệu vào

Dòng đầu tiên chứa \(N\). Mỗi dòng trong \(N-1\) dòng còn lại mô tả một lối đi bằng hai cánh đồng mà nó kết nối.

Dữ liệu ra

In ra số loại cỏ tối thiểu mà Farmer John cần sử dụng.

Ví dụ

Ví dụ 1

Input
4
1 2
4 3
2 3
Output
3
Giải thích

Trong ví dụ đơn giản này, có \(4\) cánh đồng nối với nhau thành một đường thẳng. Cần ít nhất ba loại cỏ. Chẳng hạn, Farmer John có thể gieo các loại cỏ A, B và C trên các cánh đồng theo thứ tự A - B - C - A.

Nguồn

Đề bài gốc: USACO 2019 January Contest, Silver — Grass Planting

Tác giả: Dhruv Rohatgi

Bình luận

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

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

Kỳ thi: