已知有n个课程,标记从0至n-1,课程之间是有依赖关系的,例如希望完成A课程,可能需要先完成B课程。已知n个课程的依赖关系,求是否可以将n个课程全部完成。
方法一,判断有没有环,有环则不能全部完成。
#include <vector>
struct GraphNode
{
int label;
std::vector<GraphNode*> neighbors;
GraphNode(int x) : label(x) {
};
};
class Solution
{
public:
Solution() {
}
~Solution() {
}
bool canFinish(int numCourses, std::vector<std::pair<int,int>> &prerequisites)
{
std::vector<GraphNode*> graph;
std::vector<int> visit;
for (int i = 0; i < numCourses; i++)
{
graph.push_back(new GraphNode(i));
visit.push_back(-1);
}
for (int i = 0; i < prerequisites.size(); i++)
{
GraphNode* begin = graph[prerequisites[i].second];
GraphNode* end = graph[prerequisites[i].first];
begin->neighbors.push_back(end);
}
for (int i = 0; i < graph.size(); i++