zoukankan      html  css  js  c++  java
  • 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;
        }
    };
  • 相关阅读:
    (8)ftp配置文档
    (6)centos安装和解压
    (8)python tkinter-画布
    (7)python tkinter-菜单栏
    (6)python tkinter-容器、子窗体
    (5)python tkinter-单选、多选
    bzoj1096 [ZJOI2007]仓库建设
    hdu3507 Print Article(斜率DP优化)
    bzoj1996 [Hnoi2010]chorus 合唱队
    跳石头
  • 原文地址:https://www.cnblogs.com/msymm/p/8278253.html
Copyright © 2011-2022 走看看