Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Trình biên dịch] Mô phỏng cấp phát thanh ghi bằng tô màu đồ thị kiểu Chaitin

    Cho đồ thị giao (interference graph) gồm nnn đỉnh 1,…,n1,\ldots,n1,…,n (đại diện biến/temporary) và mmm cạnh vô hướng (hai biến sống đồng thời, không thể chung thanh ghi). Cho kkk là số thanh ghi (màu) khả dụng. Mô phỏng thuật toán cấp phát thanh ghi kiểu Chaitin (simplify + spill, tô màu lạc quan) với các quy tắc CHÍNH XÁC sau (để đảm bảo kết quả đơn định):

    Giai đoạn 1 — Simplify/Spill (xây ngăn xếp): Lặp lại trên đồ thị hiện tại (loại dần các đỉnh đã đẩy vào ngăn xếp cùng cạnh của chúng) cho đến khi rỗng:

    • Nếu tồn tại đỉnh bậc (degree trong đồ thị hiện tại) <k< k<k: chọn đỉnh bậc nhỏ nhất trong số đó; nếu nhiều đỉnh cùng bậc nhỏ nhất, chọn đỉnh có số hiệu nhỏ nhất. Đẩy vào ngăn xếp, loại khỏi đồ thị hiện tại.
    • Nếu KHÔNG có đỉnh nào bậc <k< k<k: chọn đỉnh có số hiệu nhỏ nhất trong các đỉnh còn lại (ứng viên tràn — potential spill), vẫn đẩy vào ngăn xếp, loại khỏi đồ thị hiện tại.

    Giai đoạn 2 — Select (gán màu, pop theo LIFO): Lấy lần lượt từng đỉnh ra khỏi ngăn xếp (đỉnh đẩy vào SAU CÙNG được xử lý TRƯỚC). Với đỉnh vvv: xét các láng giềng của vvv trong đồ thị GỐC đã được xử lý trước đó (đã có màu, không phải SPILL); chọn màu nhỏ nhất trong {1,…,k}\{1,\ldots,k\}{1,…,k} chưa bị láng giềng nào dùng. Nếu có màu như vậy: gán màu đó. Nếu không còn màu trống: đỉnh này TRÀN (SPILL).

    In ra nnn dòng theo thứ tự đỉnh 1,…,n1,\ldots,n1,…,n: số màu (1..k1..k1..k) được gán, hoặc SPILL nếu tràn.

    Ví dụ

    Input:

    3 3 2
    1 2
    1 3
    2 3
    

    (tam giác 3 đỉnh, chỉ có 2 màu — không đủ tô đúng, phải tràn 1 đỉnh)

    Output:

    SPILL
    2
    1
    
    • Định dạng đầu vào:

      Dòng đầu: 3 số nguyên n,m,kn, m, kn,m,k (1≤n≤3001 \le n \le 3001≤n≤300, 0≤m≤200000 \le m \le 200000≤m≤20000, 1≤k≤n1 \le k \le n1≤k≤n). mmm dòng tiếp theo "uuu vvv" (1≤u,v≤n1 \le u, v \le n1≤u,v≤n, u≠vu \ne vu=v) là cạnh vô hướng (không có cạnh lặp).

    • Định dạng đầu ra:

      In nnn dòng theo thứ tự đỉnh 1,…,n1,\ldots,n1,…,n: số màu (1..k1..k1..k) hoặc SPILL.

    Ví dụ:

    Đầu vào:

    1 0 1
    

    Đầu ra:

    1
    

    Đầu vào:

    3 3 2
    1 2
    1 3
    2 3
    

    Đầu ra:

    SPILL
    2
    1
    

    Đang tải editor...