不想寫了,知道是拓撲排序,但是思考了半天不會寫,寫成下面這個樣子
主要是不知道用一個數組記錄狀态,最近老是想着節省空間,
好像誤入歧途了
檢視代碼
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;
}
};
正确的代碼,官方答案廣度優先搜尋和寬度優先搜尋