参考网址
1 Topological_Sort
1.1 存储结构: 邻接表Adjacency_List
1.1.1 C语言下的struct 邻接表
1.1.2 vector<vector> adjList
代码实现
class Solution{
public:
bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites)
{
int dual_course_num = prerequisites.size();
if(course_num == 0)
return true;
vector<int> in_degrees(numCourses, 0);
vector<vector<int>> adjList(numCourses)
for(auto node : prerequisites)
{
in_degrees[node.first] += 1;
adjList[node.second].emplace_back(node.first);
}
queue<int> q;
for(int i=0; i<numCourses; i++)
{
if(in_degrees[i] == 0)
q.push(i);
}
int cnt = 0;
while(! q.empty())
{
int getTop = q.front();
q.pop();
++cnt;
for(auto i : adjList[getTop])
{
in_degrees[i] -= 1;
if(in_degrees[i] == 0)
q.push(i);
}
}
return (cnt == numCourses);
}
};
2 Critical_Path
Diagram
关键路径
参考文献
- critical path
如果不等那么说明活动还有余额时间(在最早开始时间和最迟开始时间之间可以任选一个时间点开始),这说明还有其他活动是决定这个工程时间的,那就不是关键路径了.