Gán nhãn

Xem PDF

Điểm: 200 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho một đơn đồ thị có hướng (có thể có khuyên) gồm \(N\) đỉnh và \(M\) cạnh. Các đỉnh được đánh chỉ số từ 1 đến \(N\). Với mỗi đỉnh \(u\) từ 1 đến \(N\), hãy xác định giá trị cho \(F(u)\):

  • \(F(u) = 0\), nếu như không có đường đi từ 1 đến \(u\)
  • \(F(u)= 1\), nếu như chỉ có duy nhất một đường đi từ 1 đến \(u\)
  • \(F(u) = 2\), nếu như có nhiều hơn 1 đường đi từ 1 đến \(u\), nhưng số đường đi đếm được là hữu hạn
  • \(F(u) = -1\), nếu như có vô số đường đi từ 1 đến \(u\)
    Chú ý, một đường đi có thể đi qua một đỉnh hoặc một cung nhiều lần!

Input

  • Dòng đầu tiên gồm 2 số \(N\)\(M\), tương ứng số đỉnh và số cạnh
  • \(M\) dòng tiếp theo, mỗi dòng gồm 2 số \(u\)\(v\), tương ứng có cung từ đỉnh \(u\) đến

Output

  • Gồm một dòng duy nhất, gồm \(N\) số nguyên, số thứ \(u\) tương ứng với \(F(u)\). Các số cách nhau bởi 1 khoảng trắng

Scoring

  • 20% số tests có \(1 \le N \le 1000, 1 \le M \le 5000\)
  • 80% số tests có \(1 \le N, M \le 300000\)

Example

Test 1

Input
6 7
1 4
1 3
3 4
4 5
2 1
5 5
5 6



Output
1 0 1 2 -1 -1
Note
  • ...

Bình luận


  • 1
    leminhtuanils27    9:57 p.m. 6 Tháng 3, 2023

    đề cho n, m <= 3e5 mà sao có test lên tận 4e5 vậy nhỉ :))))