#1472. GRAPH - Viết số lên cạnh đồ thị

Bộ nhớ: 256 MiB Thời gian: 1000 ms Nhập/xuất từ luồng chuẩn
Kiểu bài: Thông thường Kiểu chấm: Trình chấm ngoài
Đưa lên bởi: Trùm CUỐI

Đề bài

Cho một đồ thị có hướng n đỉnh m cạnh. Tìm cách viết lên mỗi cạnh một số nguyên dương x\ (1 ≤ x≤ 10^9) , sao cho với mỗi đỉnh u , tổng các số viết trên các cạnh đi ra từ đỉnh u bằng tổng các số viết trên các cạnh đi vào đỉnh u .

Dữ liệu vào:

  • Dòng đầu là hai số n, m lần lượt là số đỉnh và số cạnh của đồ thị;
  • m dòng tiếp theo, mỗi dòng gồm hai số u_i v_i , thể hiện cạnh thứ i của đồ thị nối hai đỉnh u_i v_i\ (1 ≤ u_i, v_i ≤ n) .

Đề bài đảm bảo không có hai cạnh trùng nhau và cạnh nối một đỉnh với chính nó.

Dữ liệu ra:

  • Dòng đầu in YES nếu tồn tại cách viết hoặc NO nếu không;
  • Nếu dòng đầu in YES thì dòng thứ hai in ra m số, số thứ i là số viết trên cạnh thứ i .

Lưu ý: Các số x in trên các cạnh thỏa mãn 1 ≤ x ≤ 10^9 . Đề bài đảm bảo nếu tồn tại đáp số, thì chắc chắn tồn tại đáp số với các số in trên các cạnh thỏa mãn đề bài.

Dữ liệu vào:
2 2
1 2
2 1
Dữ liệu ra:
YES
1 1
Dữ liệu vào:
4 3
1 2
2 3
3 4
Dữ liệu ra:
NO 

Giới hạn:

  • Subtask \#1: 10\% số điểm có 1 ≤ n ≤ 3 ;
  • Subtask \#2: 10\% số điểm tiếp theo có 1 ≤ n ≤ 5 ;
  • Subtask \#3: 30\% số điểm tiếp theo có 1 ≤ n ≤ 200 ;
  • Subtask \#4: 30\% số điểm tiếp theo có 1 ≤ n ≤ 2000, 1 ≤ m ≤ 100000 ;
  • Subtask \#5: 20\% số điểm còn lại có 1 ≤ n ≤ 100000, 1 ≤ m ≤ 500000 .