0
点赞
收藏
分享

微信扫一扫

拓扑排序_

Resin_Wu 2022-04-08 阅读 73

拓扑排序

步骤:

1.将所有入度为0的点加入队列中

2.宽搜队列,每次遍历下一个点时,删除该点与上一个节点的连接,同时让该点的入读–,当该点的入读为0时入队即可

3.遍历结束后查看是否所有点都进入过队列,若进入过则该图存在拓扑序列,该拓扑序列即为队列中的顺序队列。

	static boolean topsort() {
		int z=0;//总共有多少个点进入了队列
		for(int i=1;i<=n;i++) {
			if(d[i]==0) {
				aq.add(i);  //队列添加
				res.add(i);  //答案添加
				z++;  //个数枚举
			}
		}
		while(!aq.isEmpty()) {
			int t=aq.poll();  
			for(int i=h[t];i!=-1;i=ne[i]) {
				int j=e[i];  
				if(--d[j]==0) {
					aq.add(j);
					res.add(j);
					z++;
				}
			}
			
		}
		return z==n;  //若z==n表示所有点都已经如果队伍!
	}
举报

相关推荐

0 条评论