首页 > 其他分享 >有向图的拓扑序列

有向图的拓扑序列

时间:2023-04-20 18:59:45浏览次数:42  
标签:有向图 idx int 拓扑 ne ++ 序列 include

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int n,m;
int h[N],e[N],ne[N],idx;
int d[N];//入线
int q[N];
void add(int a,int b){
    e[idx]=b;
    ne[idx]=h[a];
    h[a]=idx++;
}
 bool topsort()
{
    int hh = 0, tt = -1;

    for (int i = 1; i <= n; i ++ )
        if (!d[i])
            q[ ++ tt] = i;

    while (hh <= tt)
    {
        int t = q[hh ++ ];

        for (int i = h[t]; i != -1; i = ne[i])
        {
            int j = e[i];
            if (-- d[j] == 0)
                q[ ++ tt] = j;
        }
    }

    return tt == n - 1;
}

int main(){
   cin>>n>>m;
   int a,b;
   memset(h,-1,sizeof(h));
    for (int i = 0; i < m; i ++ ){
      cin>>a>>b;
      add(a,b);
      d[b]++;
   }
   if(!topsort())  cout<<"-1"<<endl;
   else
 for(int i=0;i<n;i++){
      printf("%d ",q[i]);
 }
   return 0;
}

 

 

标签:有向图,idx,int,拓扑,ne,++,序列,include
From: https://www.cnblogs.com/aixin52129211/p/17337939.html

相关文章

  • LOJ #6564 - 最长公共子序列(bitset 求 LCS)
    怎么全天下就我没见过?被薄纱了/ll还是考虑从朴素的DP入手优化。不难发现对于固定的\(i\),相邻的\(dp_{i,j}\)的差要么是\(0\)要么是\(1\),也就是说从压位的考虑角度可能很有前途。因此我们转而维护\(dp_{i,j}\)的差分数组\(v_{i,j}=dp_{i,j}-dp_{i,j-1}\)。考虑新添加一......
  • w5-1 序列合并
     方法一:#include<iostream>#include<queue>usingnamespacestd;//排序模拟,tle做法intnow1[100000],now2[100000];intmain(){intn;priority_queue<int,vector<int>,greater<int>>pq;cin>>n;for(inti=0;i<......
  • 通过fastaread读取DNA序列并进行检测matlab仿真
    1.算法描述fastareadfastaread函数是matlab生物信息学工具箱内置的一个函数,给我们的使用上带来了巨大的方便。对于基因DNA序列,转录RNA序列和表达蛋白序列的读取非常方便。使用语法为:p53nt=fastaread('p53nt.txt')%p53nt.txt为fasta格式存储序列的文件返回的p53nt......
  • w5-4 验证栈序列
     #include<iostream>#include<stack>usingnamespacestd;intq,n,a[100000],b[100000],num;intmain(){cin>>q;stack<int>s;for(intj=0;j<q;++j){cin>>n;num=0;for(inti=0;i<n;++......
  • P2661 [NOIP2015 提高组] 信息传递-拓扑排序+DFS深度优先遍历
    题目描述有 n 个同学(编号为 1 到 n )正在玩一个信息传递的游戏。在游戏里每人都有一个固定的信息传递对象,其中,编号为 i 的同学的信息传递对象是编号为 Ti​ 的同学。游戏开始时,每人都只知道自己的生日。之后每一轮中,所有人会同时将自己当前所知的生日信息告诉各自的信......
  • DNA序列数据处理
    dna序列数据处理通常包括以下步骤:数据预处理:首先,需要对原始dna序列数据进行预处理。其中包括测序错误的纠正、碱基质量过滤和去除低质量序列等。这个阶段是非常重要的,因为数据预处理的质量直接影响后续的特征提取和模型学习。特征提取:在dna序列分析中,会涉及到许多不同的特征......
  • Kraken序列分类算法
    当然可以!kraken是一种流行的高效序列分类器,使用k-mer(k个连续碱基组成的子串)方法对不同分类下的序列进行分类。以下是kraken序列分类算法简要说明:数据预处理首先,kraken会将参考数据库中的序列分割为固定长度的k-mers,这些k-mer会被记录到一个查询表中。样品序列匹配krake......
  • java -- 缓冲流、转换流、序列化流
    缓冲流缓冲流,也叫高效流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。字节缓......
  • javasec(四)序列化与反序列化基本原理
    title:javasec(四)序列化与反序列化基本原理tags:-javasec-反序列化categories:-javaseccover:'https://blog-1313934826.cos.ap-chengdu.myqcloud.com/blog-images/1.jpeg'feature:falsedate:2023-04-1816:02:20这篇文章介绍java序列化与反序列化基本原......
  • javasec(五)URLDNS反序列化分析
    这篇文章介绍URLDNS就是ysoserial中⼀个利⽤链的名字,但准确来说,这个其实不能称作“利⽤链”。因为其参数不是⼀个可以“利⽤”的命令,⽽仅为⼀个URL,其能触发的结果也不是命令执⾏,⽽是⼀次DNS请求。ysoserial打包成jar命令mvncleanpackage-DskipTests,刚刚入门所以用这条链作......