码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-Course Schedule-207

时间:2016-09-01 01:57:51      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:

有n个课程,输入一些二元组(x,y)表示先学习x必须先学习y,求根据输入的二元组的关系,能否修完所有课程

拓扑排序:选择一个入度为0的节点,删除该节点并且删除该节点所有的指出去的边,重复这个过程,知道没有入度为0的节点或者所有节点都被删除

bfs来做。不用bfs也行,模拟这个过程就行了

 1 class Solution {
 2 public:
 3     bool bfs(queue<int> q,vector<vector<int> > v,int len[],int num){
 4         while(!q.empty()){
 5             int tmp=q.front();
 6             q.pop();
 7             for(int i=0;i<v[tmp].size();i++){
 8                 len[v[tmp][i]]--;
 9                 if(len[v[tmp][i]]==0) q.push(v[tmp][i]);
10             }
11         }
12         for(int i=0;i<num;i++){
13             if(len[i]!=0) return false;
14         }
15         return true;
16     }
17     bool canFinish(int num, vector<pair<int, int> >& a) {
18         int len[num+1];
19         memset(len,0,sizeof(len));
20         vector<vector<int> > v(num+1);
21         for(int i=0;i<a.size();i++){
22             len[a[i].first]++;
23             v[a[i].second].push_back(a[i].first);
24         }
25         queue<int> q;
26         for(int i=0;i<num;i++){
27             if(len[i]==0)   q.push(i);
28         }
29         return bfs(q,v,len,num);
30     }
31 };

 

leetcode-Course Schedule-207

标签:

原文地址:http://www.cnblogs.com/0summer/p/5828062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!