如何知道是否由父母造成了回合(A => B => C => A) - c#

我有以下结构:

[Employee]
ID
Manager1ID
Manager2ID

场景:
我要进行验证,以确保所选的Manager1或Manager2不会引起回合。换句话说,我想知道这种情况是否存在:

A的经理是B,B的经理是C,C的经理也是A //无效
A => B => C => A

告诉用户A不是C的有效管理员,因为C已经是A的管理员

问题:
我虽然检查了一会儿,然后将管理器作为树中的父级循环,当我在列表中找到选定的管理器时,我知道它是无效的。 (Manager1和Manager2的两个清单的两个循环)
问题是每个雇员可能有两个经理,并且在这种情况下可能存在一个回合:

A => B(Manager1)=> C(Manager2)=> A

哪个无法检查我建议的解决方案。
任何想法!

参考方案

您尝试find a cycle in a directed graph。

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

>> Python中的运算符 - python

>>运算符做什么?例如,以下操作10 >> 1 = 5有什么作用? 参考方案 它是右移运算符,将所有位“右移”一次。二进制10是1010移到右边变成0101这是5

PS之渐变映射 - 首先打开一张图。执行“图像>调整>渐变

首先打开一张图。 执行“图像>调整>渐变映射”命令或“图层>新建调整图层>渐变映射”命令,即会弹出“渐变映射”对话框。 A01:为渐变映射的预设,用鼠标单击渐变方块,就可以应用该渐变映射,还可以通过预设右上方的小三角和载入、存储按钮来读取和保存自定义的预设A02:渐变类型有两种,一种“实底”,另一种“杂色”,看到的是实底的渐变,“杂色…

Java中的<<或>>>是什么意思? - java

This question already has answers here: Closed 7 years ago. Possible Duplicate: What does >> and >>> mean in Java?我在一些Java代码中遇到了一些陌生的符号,尽管代码可以正确编译和运行,但对于括号在此代码中的作用却感…

LINQ RemoveAll代替循环 - c#

我有两个for循环,用于从列表中删除项目。我正在为这些循环寻找等效的LINQ语句for (Int32 i = points.Count - 1; i >= 0; i--) { for (Int32 j = touchingRects.Count - 1; j >= 0; j--) { if (touchingRects[j].HitTest(po…