Tìm khớp và cầu (Cơ bản)

View as PDF

Submit solution


Points: 0.14 (partial)
Time limit: 1.0s
Memory limit: 512M
Input: stdin
Output: stdout

Problem source:
Bài cổ điển - tests added by canhteo
Problem type
Allowed languages
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Xét đơn đồ thị vô hướng ~G =~ ~(V~, ~E)~ có ~N~ ~(1 \le N \le 10000)~ đỉnh và ~M~ ~(1 \le M \le 50000)~ cạnh. Người ta định nghĩa một đỉnh gọi là khớp nếu như xoá đỉnh đó sẽ làm tăng số thành phần liên thông của đồ thị. Tương tự như vậy, một cạnh được gọi là cầu nếu xoá cạnh đó sẽ làm tăng số thành phần liên thông của đồ thị.

Vấn đề đặt ra là cần phải đếm tất cả các khớp và cầu của đồ thị ~G~.

Input

  • Dòng đầu: chứa hai số tự nhiên ~N~, ~M~.
  • ~M~ dòng sau mỗi dòng chứa một cặp số ~(u~, ~v)~ ~(u~ khác ~v~, ~1 \le u \le N~, ~1 \le v < N)~ mô tả một cạnh của ~G~.

Output

  • Gồm một dòng duy nhất ghi hai số, số thứ nhất là số khớp, số thứ hai là số cầu của ~G~

Sample Input

10 12
1 10
10 2
10 3
2 4
4 5
5 2
3 6
6 7
7 3
7 8
8 9
9 7

Sample Output

4 3

Note

image


Comments

Please read the guidelines before commenting.



  • -10
    tandochuyentin2022  commented on Sept. 3, 2024, 8:26 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • 4
    levanhuyluc  commented on Sept. 3, 2024, 7:06 a.m.

    Nếu bạn đã hoàn thành bài này và cảm thấy khá tốt thì hãy đến với bài khó hơn nhé: Đây là bài khó hơn: https://lqdoj.edu.vn/problem/upgrade Ở bài này các bạn phải vận dụng thêm là thuật toán Dijkstra và xây 1 đồ thị con để tối ưu Chúc các bạn thành công nhé ❤


  • -1
    nhanphamj  commented on July 11, 2024, 2:56 p.m.

    xin ý tưởng mấy bro


  • -2
    KienHungg  commented on June 6, 2024, 8:37 a.m.

    hello


  • 2
    BangLee  commented on May 26, 2024, 4:09 a.m. edit 2

    Bạn nào mà nộp bằng Python3 hay PyPy3 rất có thể sẽ bị lỗi phần nhập input valueError nếu như nhập bình thường, nếu bạn bị lỗi có thể làm theo cách này:

    import sys

    input = sys.stdin.read

    data = input().split() #(chia nhỏ toàn bộ input và nhập vào data)

    n,m = int(data[0]),int(data[1]) #(lúc này trong data[0] và data[1] sẽ tương ứng là n và m)

    index = 2 #(đặt biến index để duyệt những phần nhập số liệu còn lại)

    for _ in range(m):

    u,v = int(data[index]), int(data[index + 1]) #nhập cạnh u,v từ dữ liệu trong data

    index += 2 # nhớ là tăng index sau mỗi lần

    Chúc các bạn k bị lỗi ValueError


  • -67
    nthquan_1505  commented on March 16, 2023, 9:19 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


    • -36
      yanwe111  commented on March 22, 2023, 3:32 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


  • -68
    chubedanye  commented on March 16, 2023, 7:10 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • -40
    nthquan_1505  commented on March 15, 2023, 4:50 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


    • -34
      ducdacoder3103  commented on March 16, 2023, 7:11 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


      • -30
        yanwe111  commented on March 22, 2023, 3:32 a.m.

        This comment is hidden due to too much negative feedback. Show it anyway.


    • -36
      chubedanye  commented on March 16, 2023, 7:09 a.m.

      This comment is hidden due to too much negative feedback. Show it anyway.


  • -21
    hoangheovn  commented on March 13, 2023, 8:55 a.m.

    This comment is hidden due to too much negative feedback. Show it anyway.


  • 20
    21ti_hdhphat  commented on Feb. 13, 2023, 5:07 p.m.

    Nếu bạn bị dính WA 2 test cuối và muốn biết lí do tại sao sai:

    Input có thể cho một đồ thị không liên thông


    • -33
      maintainit  commented on Feb. 22, 2023, 12:40 p.m.

      This comment is hidden due to too much negative feedback. Show it anyway.