#include <stdio.h>
#include <iostream>
#include <vector>
#include <queue>
#pragma warning(disable:4996);
using namespace std;
int n, m;
const int maxn = 10010;
vector<int> G[maxn];
int InDegree[maxn] = { 0 };
void DAG()
{
priority_queue <int, vector<int>, greater<int> > q;
int ans = 0;
for (int i = 1; i <= n; i++)
{
if (InDegree[i] == 0)
{
q.push(i);
}
}
while (!q.empty())
{
int u = q.top();
q.pop();
ans++;
printf("%d", u);
if (ans < n)
{
printf(" ");
}
for (int i = 0; i < G[u].size(); i++)
{
int v = G[u][i];
InDegree[v]--;
if (InDegree[v] == 0)
{
q.push(v);
}
}
}
}
int main()
{
scanf("%d %d", &n, &m);
for (int i = 0; i < m; i++)
{
int from, to;
scanf("%d %d", &from, &to);
G[from].push_back(to);
InDegree[to]++;
}
DAG();
}
确定比赛名次|C++
最新推荐文章于 2021-10-02 16:47:18 发布