Convolution Path
Xem PDFTrong 1 buổi học lập trình nâng cao của thầy , vì quá chán với cách dạy của thầy nên và quyết định lẻn ra khỏi lớp. Nào ngờ, vừa ra tới cửa thì gặp ngay thầy giám thị đang chờ sẵng. Thầy quyết định sẽ phạt và bằng cách ra 1 bài tập về đồ thị để coi và đã hiểu bài chưa mà dám bỏ học, cụ thể đề bài như sau:
Thầy giám thị cho và một đồ thị vô hướng liên thông gồm \(N\) đỉnh và \(M\) cạnh (\(N, M \le 10^5\)), đảm bảo đồ thị là một cactus (mỗi cạnh thuộc tối đa một chu trình đơn). Mỗi đỉnh \(u\) được gán một đa thức:
Với bậc tối đa \(2^K - 1\) (\(K \le 4\)). Định nghĩa đa thức của một đường đi đơn là tích chập XOR (XOR convolution) của tất cả các đa thức tại các đỉnh thuộc đường đi đó. Với mỗi cặp đỉnh \((u, v)\), ta định nghĩa đa thức tổng hợp là tổng các đa thức của tất cả các đường đi đơn từ \(u\) đến \(v\). và cần xử lý \(Q\) truy vấn (\(Q \le 10^5\)) gồm 2 loại:
- \(1, u, c_0, c_1, ... c_{2^K-1}\): Cập nhật đa thức tại đỉnh \(u\) với các hệ số mới.
- \(2, u, v, k\): Tính hệ số thứ \(k\) (\(0 \le k < 2^K\)) của đa thức tổng hợp giữa hai đỉnh \(u\) và \(v\), kết quả lấy modulo \(998244353\).
Nhưng vì bài quá khó nên và hoàn toàn không thể làm được vì vậy các bạn hãy giúp và tìm các hệ số theo như đề bài nhé!
Input
- Dòng đầu tiên gồm bốn số nguyên \(N, M, K, Q\).
- \(M\) dòng tiếp theo, mỗi dòng gồm hai số nguyên \(u, v\) mô tả cạnh vô hướng của đồ thị.
- \(N\) dòng tiếp theo, mỗi dòng gồm \(2^K\) số nguyên mô tả các hệ số của đa thức khởi tạo cho các đỉnh từ \(1\) đến \(N\).
- \(Q\) dòng tiếp theo, mỗi dòng mô tả một truy vấn theo định dạng của 2 loại đã nêu.
Constraints
- \(1 \le N, M, Q \le 10^5\)
- \(1 \le K \le 4\)
- Các hệ số của đa thức nằm trong khoảng \([0, 998244353 - 1]\).
Output
- Với mỗi truy vấn loại 2, in ra hệ số cần tìm trên một dòng.
Example
Test 1
Input
3 3 1 2
1 2
2 3
3 1
1 0
0 1
1 1
2 1 3 1
2 1 2 0
Output
2
1
Note
- Đồ thị gồm \(N=3\) đỉnh tạo thành một chu trình tam giác \(1-2-3-1\), \(K=1\) (mỗi đa thức có \(2^1=2\) hệ số: \(c_0, c_1\)).
- Đa thức khởi tạo: đỉnh 1 là \((1,0)\), đỉnh 2 là \((0,1)\), đỉnh 3 là \((1,1)\).
- Giữa đỉnh 1 và đỉnh 3 có đúng 2 đường đi đơn: đường trực tiếp
1-3và đường vòng1-2-3. Đa thức tổng hợp là tổng tích chập XOR của cả hai đường này. Truy vấn đầu hỏi hệ số bậc 1 (\(k=1\)) của đa thức tổng hợp đó, kết quả là2. - Giữa đỉnh 1 và đỉnh 2 cũng có đúng 2 đường đi đơn: đường trực tiếp
1-2và đường vòng1-3-2. Truy vấn thứ hai hỏi hệ số bậc 0 (\(k=0\)), kết quả là1.
Test 2
Input
4 3 1 3
1 2
2 3
3 4
1 0
0 1
1 1
0 0
2 1 3 1
1 2 1 1
2 1 4 0
Output
1
0
Note
- Đồ thị gồm \(N=4\) đỉnh tạo thành một đường thẳng (cây)
1-2-3-4, \(K=1\). Đây là ví dụ minh họa cho Subtask 1: đồ thị là cây, nên giữa hai đỉnh bất kỳ chỉ có duy nhất một đường đi đơn. - Đa thức khởi tạo: đỉnh 1 là \((1,0)\), đỉnh 2 là \((0,1)\), đỉnh 3 là \((1,1)\), đỉnh 4 là \((0,0)\).
- Truy vấn đầu (\(2\ 1\ 3\ 1\)) hỏi hệ số bậc 1 của đa thức trên đường đi duy nhất
1-2-3, kết quả là1. - Truy vấn thứ hai (\(1\ 2\ 1\ 1\)) là một thao tác cập nhật: đổi đa thức tại đỉnh 2 thành \((1,1)\).
- Truy vấn thứ ba (\(2\ 1\ 4\ 0\)) hỏi hệ số bậc 0 trên đường đi duy nhất
1-2-3-4, tính với đa thức đỉnh 2 đã được cập nhật, kết quả là0.
Scoring
- Subtask 1 (15% số điểm): \(N, M, Q \le 100, K = 1\), đồ thị là cây.
- Subtask 2 (35% số điểm): Đồ thị tổng quát dạng cactus nhưng \(K = 1, N, M, Q \le 1000\).
- Subtask 3 (50% số điểm): Không giới hạn gì thêm (\(N, M, Q \le 10^5, K \le 4\)).
Bình luận