课程表

C++代码

vector<vector<int>>num(numCourses);
    vector<int>indegree(numCourses);
    queue<int>que;
    int i,res=0;
    for(i=0;i<prerequisites.size();i++)
    {
        indegree[prerequisites[i][0]]++;
        num[prerequisites[i][1]].push_back(prerequisites[i][0]);
    }
    for(i=0;i<numCourses;i++)
    {
        if(indegree[i]==0)
            que.push(i);
    }
    while(!que.empty())
    {
        int top=que.front();
        que.pop();
        res++;
        if(res==numCourses)
            return true;
        for(i=0;i<num[top].size();i++)
        {
            indegree[num[top][i]]--;
            if(indegree[num[top][i]]==0)
                que.push(num[top][i]);
        }
    }
    return res==numCourses;

拓扑排序;图;
课程表_第1张图片

你可能感兴趣的:(课程表)