拓扑排序找到图的根,用于计算烷烃的个数

来源:互联网 发布:知乎 进小区发传单 编辑:程序博客网 时间:2024/04/29 00:12
//拓扑排序找根,那就是找重心喽? void Top(int n,int x){memset(visit,0,sizeof(visit));int head=0,tail=0;for(int i=0;i<n;i++){if(g[i][n]==1){//对于与n相连接的点,如果g[i][n]==1,那么说明是相连的 visit[i]=1;level[tail]=0;q[tail++]=i;}}while(head<tail){int now=q[head],l=level[head++];for(int i=0;i<n;i++){if(!visit[i]&&g[now][i]){g[i][n]--;if(g[i][n]<=1){level[tail]=l+1;q[tail++]=i;visit[i]=1;}}}}int l=level[tail-1],k=0;for(int i=tail-1;level[i]==1;i--){if(k==0){one[x]=q[i];k++;}else{two[x]=q[i];}} }

0 0