The counting of cascade paths is done by SQL Server and rather than trying to work out whether any cycles actually exist, It refuses to create the referential actions (CASCADE): you can also create the constraints without the referential actions.
But, if you can't alter your design (or doing so would compromise things) then you must use triggers as a last resort.
FWIW resolving cascade paths is a complex problem.
Another SQL products just ignore the problem and allow you to create cycles, in that case, it will be a race to see which will overwrite the value last, due to the ignorance of the designer (e.g. Jet/ACE does this).
However, some SQL products will attempt to resolve simple cases. But the fact remains the same, SQL Server doesn't even try, it doesn't allow more than one path and at least it tells you so.
Note: Microsoft supports the use of FK constraints instead of triggers.