Đường truyền quan trọng

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: 1600 Thời gian: 1.0s Bộ nhớ: 500M Input: bàn phím Output: màn hình

Cho một mạng gồm tập hợp các nút và tập các đường truyền hai chiều nối giữa các cặp mạng. Người ta biết rằng mạng này thông suốt, tức là mọi cặp nút trong mạng đều có thể truyền tin cho nhau. Một số nút trong mạng cung cấp dịch vụ \(A\) còn một số nút khác cung cấp dịch vụ \(B\) cho tất cả các nút (kể cả nó). Có thể có một nút cung cấp cả hai dịch vụ.

Nếu một đường truyền trực tiếp bị hỏng có thể làm cho một số nút trong mạng không thể sử dụng một trong hai dịch vụ. Các đường truyền như vậy được gọi là các đường truyền quan trọng.

Bạn hãy viết chương trình xác định số đường truyền quan trọng trong mạng.

Input

  • Dòng đầu tiên ghi \(4\) số \(N, M, K\) và \(L\) \((1 \leq N \leq 105, 1 \leq M \leq 106, 1 \leq K, L \leq N)\). Trong đó \(N\) là số nút trong mạng, \(M\) là số đường truyền trực tiếp trong mạng, \(K\) là số nút cung cấp dịch vụ \(A\) và \(L\) là số nút cung cấp dịch vụ \(B\). Các nút được đánh số từ \(1\) đến \(N\).
  • Dòng thứ hai ghi \(K\) số là số hiệu các nút cung cấp dịch vụ \(A\).
  • Dòng thứ ba ghi \(L\) số là số hiệu các nút cung cấp dịch vụ \(B\).
  • Mỗi dòng trong số \(M\) dòng tiếp theo ghi hai số \(p, q\) \((1 \leq p, q \leq N, p \neq q)\) thể hiện một đường truyền trực tiếp nối nút \(p\) và nút \(q\).

Output

  • Một số nguyên thể hiện số lượng đường truyền quan trọng trong mạng

Example

Test 1

Input
9 10 3 4
2 4 5 
4 9 8 3 
1 2 
4 1 
2 3 
4 2 
1 5 
5 6 
6 7 
6 8 
7 9 
8 7
Output
3
Note

Các đường truyền quan trọng là:
\(3\) \(2\)
\(5\) \(6\)
\(7\) \(9\)

Bình luận

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

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