Gán giá trị đỉnh

Đề bài

Mô tả

Cho một đồ thị vô hướng gồm N đỉnh và M cạnh. Mỗi cạnh được tô một trong hai màu: đen hoặc đỏ.

Bạn cần gán cho mỗi đỉnh một số thực sao cho:

  • Với mỗi cạnh màu đen, tổng hai số ở hai đầu mút của nó bằng 1;
  • Với mỗi cạnh màu đỏ, tổng hai số ở hai đầu mút của nó bằng 2;
  • Tổng giá trị tuyệt đối của tất cả các số được gán là nhỏ nhất có thể.

Nếu không tồn tại cách gán nào thỏa mãn hai điều kiện đầu tiên, hãy báo là vô nghiệm.

Đồ thị có thể chứa cạnh nối một đỉnh với chính nó (khuyên) và nhiều cạnh giữa cùng một cặp đỉnh. Một khuyên màu đen tại đỉnh u nghĩa là 2·xu=1, một khuyên màu đỏ nghĩa là 2·xu=2.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên NM: số đỉnh và số cạnh. Các đỉnh được đánh số 1,2,,N.
  • M dòng tiếp theo, mỗi dòng chứa ba số nguyên a, b, c: có một cạnh giữa đỉnh a và đỉnh b với màu c (c=1 là đen, c=2 là đỏ).

Dữ liệu ra

  • Nếu có lời giải, in ra dòng đầu chứa từ YES, dòng thứ hai chứa N số cách nhau bởi dấu cách: số thứ i là giá trị gán cho đỉnh i.
  • Nếu không có lời giải, in ra một dòng duy nhất chứa từ NO.

Kết quả được chấp nhận nếu tổng hai số ở hai đầu mỗi cạnh sai khác so với giá trị yêu cầu không quá 106, và tổng giá trị tuyệt đối sai khác so với giá trị nhỏ nhất không quá 106. Nếu có nhiều lời giải hợp lệ, in ra một lời giải bất kỳ.

Ràng buộc

  • 1N100000
  • 0M200000
  • 1a,bN
  • c{1,2}

Ví dụ

Input Output Giải thích
2 1
1 2 1
YES
1.00 0.00
Cạnh đen nên x1+x2=1. Tổng |x1|+|x2| nhỏ nhất bằng 1, đạt được với mọi x1[0,1]; ví dụ 0.3 0.7 cũng hợp lệ.
4 4
1 2 1
2 3 2
1 3 2
3 4 1
YES
0.50 0.50 1.50 -0.50
Kiểm tra: x1+x2=1 (đen), x2+x3=2 (đỏ), x1+x3=2 (đỏ), x3+x4=1 (đen). Tổng trị tuyệt đối là 3.
3 4
1 2 2
2 2 1
2 1 1
1 2 2
NO Khuyên đen tại đỉnh 2 cho x2=0.5, nhưng cạnh đỏ 12 và cạnh đen 12 đòi hỏi x1+x2 vừa bằng 2 vừa bằng 1, mâu thuẫn.
3 2
1 2 2
2 3 2
YES
0.00 2.00 0.00
Hai cạnh đỏ: x1+x2=2, x2+x3=2. Chọn x2=2, x1=x3=0 cho tổng trị tuyệt đối nhỏ nhất là 2.

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 1.26.3 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