Hướng dẫn cho Truyền tin
Chỉ sử dụng khi thực sự cần thiết như một cách tôn trọng tác giả và người viết hướng dẫn này.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Chép code từ bài hướng dẫn để nộp bài là hành vi có thể dẫn đến khóa tài khoản.
Coi mỗi học sinh là 1 đỉnh, mỗi đường liên lạc 1 chiều là 1 cung có hướng của đồ thì ta có nhận xét:
-
Nếu ta truyền tin cho bất kì 1 đỉnh nào trong thành phần liên thông mạnh \(X\) thì tất cả những đỉnh thuộc thành phần liên thông mạnh đó và những thành phần liên thông mạnh \(Y\) (có \(u->v\) với \(u\) thuộc \(x\) và \(v\) thuộc \(Y\)) đều nhận đc thông tin.
-
Do đó ta sử dụng thuật toán tarjan để tìm các thành phần liên thông mạnh. Sau đó ta dùng mảng \(dd\) để đánh dấu với ý nghĩa nếu \(dd[i]=1\) thì thành phần liên thông mạnh \(i\) k phải truyền tin vào bất kì 1 đỉnh nào cả. Để làm được điều này ta duyệt qua tất cả các cung có hướng \(u->v\). nếu \(lt[u]!=lt[v]\) thì gán \(dd[v]=1\).
Bình luận