Không hỗ trợ Mobile

Chế độ luyện tập yêu cầu môi trường màn hình lớn để làm bài và chống gian lận hiệu quả. Vui lòng truy cập bằng máy tính (Desktop/Laptop) để tiếp tục thao tác.

Quay lại trang chủ

#1082 · Đếm màu cây - COUNT

MÔ TẢ BÀI TOÁN

Trong một giờ học tại VP, cô Hương ra một đề bài như sau: Cho một cây N đỉnh, đánh số từ 1 đến N , gốc tại 1, đỉnh i được tô màu a_i. Yêu cầu đếm số lượng màu khác nhau trong cây con gốc i với mọi i từ 1 đến N.

Ví dụ cho cây 6 đỉnh như sau:

16698998369927.png

Với màu của các đỉnh lần lượt là: 1, 2, 3, 4, 5, 6.

Xét cây con gốc 4, chứa 4 đỉnh: 4, 2, 3, 5. Vì thế nên cây con gốc 4 chứa 4 màu khác nhau.

Tuy nhiên, bài toán này quá khó với Huy. Các bạn hãy giúp Huy giải bài toán này nhé.

Dữ liệu vào

  • Dòng đầu tiên chứa một số nguyên dương duy nhất N (N \leq 200000).
  • N −1 dòng tiếp theo, mỗi dòng chứa hai số nguyên chỉ một cạnh của cây.
  • Dòng cuối cùng chứa N số nguyên dương a_i (a_i \leq 200000).

Dữ liệu ra

In ra N số nguyên trên một dòng là kết quả bài toán, số thứ i là kết quả của cây con gốc i.

BẢNG TỔNG QUAN KẾT QUẢ

# Tài khoản Kết suất Lúc nộp
1
318 ms 20924 KB
3350 Bytes
13/09/2025
21:18
2
470 ms 70144 KB
1123 Bytes
21/02/2025
21:55
3
519 ms 42920 KB
1313 Bytes
11/04/2024
21:45
4
543 ms 43316 KB
934 Bytes
27/10/2023
19:56
5
550 ms 43312 KB
934 Bytes
27/10/2023
19:56
6
564 ms 43304 KB
934 Bytes
27/10/2023
19:55
7
564 ms 111388 KB
1932 Bytes
23/12/2025
14:51
8
570 ms 43304 KB
909 Bytes
15/05/2023
14:25
9
579 ms 43304 KB
909 Bytes
15/05/2023
14:30
10
622 ms 70116 KB
1267 Bytes
02/11/2024
20:32
11
628 ms 43296 KB
911 Bytes
15/05/2023
14:26
12
N
649 ms 116296 KB
1318 Bytes
19/05/2024
13:29
13
666 ms 111376 KB
2035 Bytes
02/12/2022
01:39
14
Lê Duy Hải @2280600799
678 ms 112140 KB
1805 Bytes
30/03/2024
14:52
15
685 ms 43276 KB
915 Bytes
15/05/2023
14:25
16
T
Mã Hoàng Thái @2180606816
706 ms 103616 KB
1344 Bytes
07/03/2025
13:45
17
714 ms 111364 KB
1601 Bytes
01/12/2022
20:08
18
739 ms 32516 KB
1771 Bytes
02/12/2022
01:29
19
B
Trần Gia Bảo @2380600172
742 ms 111412 KB
1599 Bytes
02/05/2024
22:54
20
Đỗ Chí Thành @24800600886
763 ms 103612 KB
1994 Bytes
07/03/2025
07:33

LỊCH SỬ CÁ NHÂN

Vui lòng đăng nhập để xem lịch sử làm bài của bạn.

THẢO LUẬN BÀI TOÁN

L
Mai Dương Long @2380601236
1 năm trước

Bị vượt quá giới hạn bộ nhớ quài!

#include <iostream>
#include <vector>
#include <set>

using namespace std;

vector<vector<int>> adj;
vector<bool> visited;
vector<set<int>> M;

void DFS(int u) {
    visited[u] = true;
    for (int v : adj[u]) {
        if (!visited[v]) {
            DFS(v);
            M[u].insert(M[v].begin(), M[v].end());
        }
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int n,u,v,i,x;
    cin >> n;

    adj.resize(n + 1);
    visited.resize(n + 1, false);
    M.resize(n + 1);

    for (i = 1; i <= n - 1; ++i) {
        cin >> u >> v;
        adj[u].push_back(v);
        adj[v].push_back(u);
    }

    for (i = 1; i <= n; ++i) {
        cin >> x;
        M[i].insert(x);
    }
    DFS(1);
    for (i = 1; i <= n; ++i) {
        cout << M[i].size() << " ";
    }
    return 0;
}

Vào thảo luận 0 Phản hồi

GỢI Ý & HƯỚNG DẪN

  • Subtask 1 (40% số test): 1 \leq N \leq 10^3.
  • Subtask 2 (60% số test): Không có ràng buộc gì thêm.
Viết code