• Topological Sor-207. Course Schedule


    There are a total of n courses you have to take, labeled from 0 to n - 1.

    Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]

    Given the total number of courses and a list of prerequisite pairs, is it possible for you to finish all courses?

    For example:

    2, [[1,0]]

    There are a total of 2 courses to take. To take course 1 you should have finished course 0. So it is possible.

    2, [[1,0],[0,1]]

    There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.

    Note:

    1. The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
    2. You may assume that there are no duplicate edges in the input prerequisites.
    class Solution {
    public:
        bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {
            vector<vector<int>> graph(numCourses, vector<int>(0)); 
            vector<int> in(numCourses, 0); 
            for (auto a : prerequisites) { 
                graph[a.second].push_back(a.first);
                ++in[a.first];
            }
            queue<int> q; 
            for (int i = 0; i < numCourses; ++i) {
                if (in[i] == 0) q.push(i);
            }
            while (!q.empty()) {
                int t = q.front();
                q.pop();
                for (auto a : graph[t]) {
                    --in[a];
                    if (in[a] == 0) q.push(a);
                }
            }
            for (int i = 0; i < numCourses; ++i) {
                if (in[i] != 0) return false;
            }
            return true;
        }
    };
  • 相关阅读:
    Sass 初级学习三
    Sass 初级学习二
    Sass 初级学习一
    数据库0,1和flase true的转换
    Mybatis逆向工程-mybatis generator
    码畜生活现状
    【抽五分钟】使用VuePress创建在线文档中心
    面经整理
    C#引用fo-dicom读取dicom文件异常
    windows10更新后, VMWare无法启动虚拟机: vmdb-14 pipe connection has been broken
  • 原文地址:https://www.cnblogs.com/msymm/p/8278253.html
Copyright © 2020-2023  润新知