cpp-295Đọc toàn bộ đề miễn phí

Kiểm tra đồ thị hai phía

Có n đội bóng và một số trận "kỵ nhau" giữa họ. Ta muốn chia các đội vào hai bảng sao

C++Cơ bản15 phút

Tiến độ của tôi ở bài này

Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.

Đang tải điểm của bạn…

Kiến thức và chủ đề

graphbfsbipartitecoloringentry-ramp

Kiến thức tiên quyết: cpp-basics, arrays.

Nội dung đề bài

Mô tả bài toán

Có n đội bóng và một số trận "kỵ nhau" giữa họ. Ta muốn chia các đội vào hai bảng sao cho mọi trận kỵ nhau đều nằm giữa hai bảng khác nhau, tức là không có hai đội nào kỵ nhau lại cùng một bảng. Đó chính là bài kiểm tra đồ thị hai phía.

Yêu cầu

Cho đồ thị vô hướng đơn gồm n đỉnh đánh số 1..n và m cạnh. Hãy xác định xem có thể tô mỗi đỉnh bằng một trong hai màu sao cho hai đầu của mọi cạnh luôn khác màu hay không. Nếu có, in YES; nếu không, in NO. Đồ thị có thể rời rạc, khi đó phải kiểm tra từng thành phần liên thông.

Quy ước nộp bài

Nộp tệp solution.cpp đọc dữ liệu từ stdin và in kết quả ra stdout. Chỉ in đúng YES hoặc NO, không in thêm ký tự nào. Chỉ dùng thư viện chuẩn C++17.

Input

  • Dòng đầu tiên: hai số nguyên n, m (1 <= n <= 8, 0 <= m <= 12).
  • m dòng tiếp theo: mỗi dòng hai số nguyên u, v (1 <= u, v <= n, u != v) mô tả

một cạnh vô hướng giữa u và v. Giữa hai đỉnh có nhiều nhất một cạnh và không có khuyên.

  • Nếu m = 0 thì không có dòng cạnh nào.

Output

In ra stdout duy nhất một từ YES (tô được bằng hai màu) hoặc NO (không tô được).

Ràng buộc

  • Đồ thị đơn, vô hướng, có thể rời rạc.
  • Đỉnh cô lập luôn tô được, không làm kết quả đổi thành NO.
  • Mỗi bộ dữ liệu có thời gian chạy 1 giây.

Ví dụ 1

Input

4 4
1 2
2 3
3 4
4 1

Output

YES

Ví dụ 2

Input

3 3
1 2
2 3
3 1

Output

NO

Giải thích

Dữ liệu vào:

Chu trình 1-2-3-4-1 có độ dài chẵn, tô xen kẽ 1: đỏ, 2: xanh, 3: đỏ, 4: xanh không mâu thuẫn, nên kết quả là:

Còn với dữ liệu vào

tam giác có chu trình độ dài lẻ nên không thể tô hai màu, kết quả là NO.

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.

Góp ý & báo lỗi bài tập

Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.

Nhóm Zalo