Acwing 848.有向图的拓扑序列

Posted 叶卡捷琳堡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Acwing 848.有向图的拓扑序列相关的知识,希望对你有一定的参考价值。

使用STL实现

#include<iostream>
#include<cstring>
#include<queue>
#include<algorithm>
#include<vector>
using namespace std;

const int N = 100010,M = N * 2;
int h[N],e[M],ne[M],idx;
int n,m;
// 保存每个点的入度
int d[N];
queue<int> q;
vector<int> res;

void add(int a,int b)

    e[idx] = b,ne[idx] = h[a],h[a] = idx++;


bool topSort()

    for(int i = 1;i <= n;i++)
    
        if(d[i] == 0) q.push(i);
    
    while(!q.empty())
    
        int t = q.front();
        q.pop();
        res.push_back(t);
        for(int i = h[t];i != -1;i = ne[i])
        
            int j = e[i];
            d[j]--;
            if(d[j] == 0) q.push(j);
        
    
    return res.size() == n;


int main()

    memset(h,-1,sizeof h);
    cin >> n >> m;
    for(int i = 0;i < m;i++)
    
        int x,y;
        cin >> x >> y;
        add(x,y);
        d[y]++;
    
    if(topSort())
    
        for(int i = 0;i < res.size();i++) cout << res[i] << " ";
    
    else cout << -1 << endl;

以上是关于Acwing 848.有向图的拓扑序列的主要内容,如果未能解决你的问题,请参考以下文章

Acwing 848.有向图的拓扑序列

848. 有向图的拓扑序列详解

AcWing 164.可达性统计(图论+拓扑排序+位运算)

AcWing 164.可达性统计(图论+拓扑排序+位运算)

AcWing 164.可达性统计(图论+拓扑排序+位运算)

AcWing 164.可达性统计(图论+拓扑排序+位运算)