中级农民
- 积分
- 105
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2014-10-14
- 最后登录
- 1970-1-1
|
第一题帖了一下自己的代码,就是一个拓扑学排序,不知道我题目理解的对不对- class Task {
- void execute();
- vector<Task> getDependencies(); //return the task's children
- };
- vector<Task> scheduleTasks(vector<Task> input){
- vector<Task> ret;
- unordered_set<Task> myset;
- for(Task t: input){
- if(myset.find(t)==myset.end()){
- dfs(t, ret, myset);
- }
- }
- return reverse(ret.begin(), ret.end());
- }
- void dfs(Task& t, vector<Task>& ret, unordered_set<Task>& myset){
- vector<Task> children = t.getDependencies();
- for(Task task: children){
- if(myset.find(task)==myset.end())
- dfs(task, ret, myset);
- }
- ret.push_back(t);
- myset.insert(t);
- }
复制代码 |
|