Pagini recente » Cod sursa (job #1659508) | Cod sursa (job #1706745) | Cod sursa (job #2942028) | Cod sursa (job #2220938) | Cod sursa (job #2423633)
#include<iostream>
#include<fstream>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("sortare.in");
ofstream fout("sortare.out");
int N, M;
vector<int>graf[50005];
int grad[50005];
queue<int>stiva;
void topologie()
{
for (int i = 1; i <= N; i++)
if (grad[i] == 0) stiva.push(i);
while (!stiva.empty())
{
int x = stiva.front();
stiva.pop();
int l = graf[x].size();
for (int i = 0; i < l; i++)
{
int vecin = graf[x][i];
grad[vecin]--;
if (grad[vecin] == 0) stiva.push(vecin);
}
fout << x << " ";
}
}
int main()
{
fin >> N >> M;
int a, b;
for (int i = 0; i < M; i++)
{
fin >> a >> b;
grad[b]++;
graf[a].push_back(b);
}
topologie();
system("pause");
}