Day 48 算法笔记之提高篇(4)10.6 拓扑排序

const int maxv = 1000000;

vector<int> g[maxv];
int n,m,indegree[maxv];

bool topologicalsort(){
	int num=0;
	queue<int> q;
	for(int i=0;i<n;i++){
		if(indegree[i]==0){
			q.push(i);
		}
	}
	
	while(!q.empty()){
		int u = q.front();
		q.pop();
		for(int i=0;i<g[u].size();i++){
			int v = g[u][i];
			indegree[v]--;
			if(indegree[v]==0){
				q.push(v);
			}
		}
		g[u].clear();
		num++;
	}
	if(num==n) return true;
	else return false;
}

おすすめ

転載: blog.csdn.net/aixiaoxiao13/article/details/121636693