trang chủ / bài tập / graphstr

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

Đề bài

Mô tả

Cho một xâu s=s1s2sn 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 ij, có một cạnh nối ij khi và chỉ khi hai chữ cái sisj 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 nm — 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 uivi — một cạnh nối hai đỉnh uivi.

Đả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

  • 1n500
  • 0mn(n1)2
  • 1ui,vin, uivi

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ả 13, còn 13 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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 GO groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0