课程表
代码如下:
public class Solution {
public bool CanFinish(int numCourses, int[][] prerequisites) {
//科目的依赖关系
List<int>[] list = Enumerable.Range(0, numCourses).Select(c => new List<int>()).ToArray();
foreach (int[] item in prerequisites)
{
list[item[0]].Add(item[1]);
}
//可以全部学习的科目
var trueList = new HashSet<int>();
for (int i = 0; i < numCourses; i++)
{
if (!DFS(trueList, new HashSet<int>(), list, i))
{
return false;
}
}
return true;
}
public bool DFS(HashSet<int> trueList, HashSet<int> a, List<int>[] list, int id)
{
if (trueList.Contains(id))
{
return true;
}
if (a.Contains(id))
{
return false;
}
else
{
a.Add(id);
}
foreach (int item in list[id])
{
if (DFS(trueList, a, list, item) == false)
{
return false;
}
}
trueList.Add(id);
return true;
return true;
}
}
结果: