拓扑排序

Kahn算法

找出图中任意入度为 0 的一个点,将它删除并放入集合 a (即让他到达的点的入度减一),最后集合 a 的顺序就是一个合法的拓扑序列.

int a[N],into[N],ma[N][N],n;//a为排序好的拓扑序列,into记录入度,ma存图
bool topsort(){
for(int i=1;i<=n;i++){
int j=1;
while((!into[j])&&j<=n) j++;//寻找入度为0的点
if(j>n) return false;//如果没有入度为0的点,返回不成立
else{
a[i]=j;
into[j]=INF;//删除该点
for(int k=1;k<=n;k++) if(ma[j][k]) into[k]--;//将相连的点的入度全部减一
}
}
return true;
}
posted @   BSS梅者如西  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
   
点击右上角即可分享
微信分享提示