public class Solution
{
public bool CanFinish(int numCourses,int[][] prerequisites){
LinkedList<int>[] list = new LinkedList<int>[numCourses];for(int i =0; i < list.Length; i++){
list[i]= new LinkedList<int>();}int[] count = new int[numCourses];
foreach (var item in prerequisites){
list[item[1]].AddLast(item[0]);
count[item[0]]++;}
Queue<int> queue = new Queue<int>();for(int i =0; i < numCourses; i++){if(count[i]==0)
queue.Enqueue(i);}if(queue.Count == numCourses)return true;while(queue.Count>0){int j = queue.Dequeue();
LinkedListNode<int> p = list[j].First;while(p!=null){
count[p.Value]--;if(count[p.Value]==0)
queue.Enqueue(p.Value);
p = p.Next;}}
bool flag = false;
foreach (var item in count){if(item!=0){
flag = true;break;}}return flag == true ? false : true;}}