拓撲排序(搬運)
作者:互联网
class Solution {
#define maxn 10010
vector<int> edges[maxn];
public:
vector<int> eventualSafeNodes(vector<vector<int>>& graph) {
int i, j;
int n = graph.size();
bool visited[maxn];
int in[maxn];
queue <int> q;
memset(visited, 0, sizeof(visited));
memset(in, 0, sizeof(in));
for(i = 0; i < n; ++i) edges[i].clear();
for(i = 0; i < n; ++i) {
if(graph[i].size() == 0) {
q.push(i);
visited[i] = 1;
}else {
for(j = 0; j < graph[i].size(); ++j) {
int v = i;
int u = graph[i][j];
++in[v];
edges[u].push_back(v);
}
}
}
while(!q.empty()) {
int u = q.front();
q.pop();
for(i = 0; i < edges[u].size(); ++i) {
int v = edges[u][i];
--in[v];
if(in[v] == 0) {
visited[v] = 1;
q.push(v);
}
}
}
vector<int> ret;
for(i = 0; i < n; ++i) {
if(visited[i]) {
ret.push_back(i);
}
}
return ret;
}
};
标签:int,拓撲,搬運,++,edges,graph,visited,排序,size 来源: https://www.cnblogs.com/sixiaoxiaoya/p/16326371.html