210. Course Schedule II
2016-04-18 23:38
316 查看
class Solution { public: bool find_pre(unordered_map<int,vector<int>> &hash,unordered_set<int> &m,int i,int *d,stack<int> &v) { d[i]=1; v.push(i); if(hash.find(i)==hash.end()) return true; for(int j=0;j<hash[i].size();j++) { if(m.find(hash[i][j])!=m.end()) return false; if(d[hash[i][j]]==1) continue; m.insert(hash[i][j]); if(!find_pre(hash,m,hash[i][j],d,v)) return false; m.erase(hash[i][j]); } return true; } vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { unordered_map<int,vector<int>> hash; vector<int> temp; for(int i=0;i<prerequisites.size();i++) { if(hash.find(prerequisites[i].first)!=hash.end()) hash[prerequisites[i].first].push_back(prerequisites[i].second); else hash[prerequisites[i].first]={prerequisites[i].second}; } int *d=new int[numCourses]; memset(d,0,sizeof(int)*numCourses); vector<int> v; for(int i=0;i<numCourses;i++) { stack<int> s; unordered_set<int> m; m.insert(i); if(d[i]==0&&!find_pre(hash,m,i,d,s)) return {}; while(!s.empty()) { v.push_back(s.top()); s.pop(); } } return v; } };
相关文章推荐
- Mysql之SQL Mode用法详解
- Leetcode no. 69
- 阿里电商大脑,比你更懂你
- 《第一行代码》第八章 通知的高级技巧
- NOIP2009普及组细胞分裂(数论)——yhx
- python open中的参数
- 稀疏矩阵的压缩存储
- 博客搬家 -- 将博客从CSDN迁移到hexo上
- 苹果产品设计中的黄金比例运用
- 吴翰清:云计算安全是“皇帝的新装”么?
- mysql在互联网应用设计和开发中的注意事项(一)
- 序列图(转)
- android studio module上传到jcenter
- spring知识点积累2
- hlg 2130 状压dp
- 1001 and 1002 of search
- activity间传递数据
- 《八声甘州》--武汉
- CMake 调用 Shell 脚本
- mybatis获取mysql自增的id值