Friends - (Olympic 30/4 K11 - 2021)

Xem PDF



Tác giả:
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, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2200 Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho đồ thị vô hướng gồm \(n\) đỉnh và \(m\) cạnh. Bạn cần phải thực hiện \(q\) truy vấn thuộc một trong hai loại sau:

  1. 1 u v: Nối một cạnh giữa hai đỉnh \(u\)\(v\) nếu chúng chưa được nối.
  2. 2 u v: Kiểm tra xem có tồn tại đường đi giữa hai đỉnh \(u\)\(v\) với độ dài (số cạnh) không quá \(2\) hay không?

Input

  • Dòng đầu tiên chứa hai số nguyên dương \(n, m\).
  • \(m\) dòng tiếp theo, mỗi dòng chứa hai số nguyên \(a_i, b_i\) biểu diễn một cạnh của đồ thị ban đầu.
  • Dòng tiếp theo chứa số nguyên dương \(q\) là số lượng truy vấn.
  • \(q\) dòng cuối cùng, mỗi dòng chứa ba số nguyên \(t_i, u_i, v_i\) (\(t_i \in \{1, 2\}\)) mô tả loại truy vấn và hai đỉnh tương ứng.

Output

  • Với mỗi truy vấn loại \(2\) (\(t_i = 2\)), in ra YES nếu tồn tại đường đi có độ dài không quá \(2\) giữa \(u\)\(v\), ngược lại in ra NO.

Example

Test 1

Input
4 2
1 2
2 3
4
2 1 2
2 3 4
1 3 4
2 2 4
Output
YES
NO
YES
Note
  • Ở truy vấn thứ nhất, \(1\)\(2\) đã có cạnh nối trực tiếp (độ dài \(1 \le 2\)), nên kết quả là YES.
  • Ở truy vấn thứ hai, đỉnh \(4\) không có cạnh nối với ai, nên không có đường đi độ dài \(\le 2\) tới \(3\), kết quả là NO.
  • Ở truy vấn thứ tư, sau khi nối thêm cạnh \((3, 4)\), giữa \(2\)\(4\) có đường đi \(2 \to 3 \to 4\) (độ dài \(2\)), nên kết quả là YES.

Test 2

Input
4 2
1 2
2 4
4
2 2 3
1 3 4
2 2 3
2 1 3
Output
NO
YES
NO

Scoring

  • Subtask \(1\) (\(50\%\) số điểm): \(n, m, q \le 5000\).
  • Subtask \(2\) (\(50\%\) số điểm): \(n, m, q \le 2 \cdot 10^5\).

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: