不想写了,知道是拓扑排序,但是思考了半天不会写,写成下面这个样子
主要是不知道用一个数组记录状态,最近老是想着节省空间,
好像误入歧途了
查看代码
class Solution {
public:
bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {
vector<vector<int>>temp(numCourses);
// unordered_map<int>flag;
// for(int i=0;i<numCourses;i++){
// flag[i] = 0;
// }
int num=0;
int tail = -1;
set<int>s;
bool t = false;
for(int i=0;i<prerequisites.size();i++){
temp[prerequisites[i][1]].push_back(prerequisites[i][0]);
}
for(int i=0;i<temp.size();i++){
if(temp[i].size()==0){
tail = i;
}
}
if(tail == -1){
return false;
}
for(int i=0;i<numCourses;i++){
if(go())
}
return true;
}
};
正确的代码,官方答案广度优先搜索和宽度优先搜索