trang chủ / đề bài / graphstr

Đồ thị và xâu ký tự

Đề bài

Mô tả

Cho một xâu s=s1s2…sn chỉ gồm các chữ cái "a", "b" và "c". Từ xâu này người ta dựng một đồ thị vô hướng G gồm n đỉnh (đánh số từ 1 đến n) theo quy tắc sau:

  • Với mọi cặp đỉnh i≠j, có một cạnh nối i và j khi và chỉ khi hai chữ cái si và sj bằng nhau hoặc kề nhau trong bảng chữ cái.
  • Hai chữ cái được coi là kề nhau nếu chúng là cặp "a"–"b" hoặc "b"–"c". Cặp "a"–"c" không kề nhau.

Sau đó xâu s bị xoá đi, chỉ còn lại đồ thị G. Cho trước đồ thị G, hãy xác định xem có tồn tại một xâu s nào đó (độ dài đúng bằng n, chỉ gồm "a", "b", "c") sao cho đồ thị dựng từ s trùng khớp với G hay không. Nếu có, hãy đưa ra một xâu như vậy.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m — số đỉnh và số cạnh của đồ thị G.
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên ui và vi — một cạnh nối hai đỉnh ui và vi.

Đảm bảo đồ thị không có cạnh lặp (mỗi cặp đỉnh xuất hiện không quá một lần).

Dữ liệu ra

  • Nếu xâu s tồn tại, in ra "Yes" ở dòng đầu, và ở dòng thứ hai in ra một xâu s hợp lệ bất kỳ (độ dài đúng n, chỉ gồm "a", "b", "c").
  • Ngược lại, in ra "No".

Nếu có nhiều xâu thoả mãn, đưa ra xâu nào cũng được.

Ràng buộc

  • 1≤n≤500
  • 0≤m≤n(n−1)2
  • 1≤ui,vi≤n, ui≠vi

Ví dụ

Input Output Giải thích
2 1
1 2
Yes
bb
Hai đỉnh có cạnh nối nên hai chữ cái phải bằng nhau hoặc kề nhau. Xâu "bb" thoả mãn; các xâu như "aa", "ab", "bc"… cũng hợp lệ.
4 3
1 2
1 3
1 4
No Đỉnh 1 kề với cả ba đỉnh còn lại, nhưng ba đỉnh này lại không kề nhau. Chúng phải mang các chữ cái đôi một không kề nhau, mà chỉ có duy nhất một cặp như vậy là "a"–"c" — không đủ cho ba đỉnh.
3 2
1 2
3 2
Yes
abc
Đỉnh 2 kề với cả 1 và 3, còn 1 và 3 không kề nhau. Gán "a", "b", "c" cho các đỉnh 1,2,3: "a"–"b" kề, "b"–"c" kề, "a"–"c" không kề — đúng với đồ thị.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0