Pagini recente » Cod sursa (job #3271941) | Cod sursa (job #1465492) | Cod sursa (job #2422021) | Cod sursa (job #1481553) | Cod sursa (job #3033320)
#include <fstream>
#include <queue>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int N=5e4;
const int M=1e5;
struct vecin{
int urm,vf;
}v[M+1];
queue<int>q;
int lst[N+1],nrp[N+1],n,m,nr;
void adaugare(int x,int y)
{
v[++nr].vf=y;
v[nr].urm=lst[x];
lst[x]=nr;
nrp[y]++;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
int x,y;
fin>>x>>y;
adaugare(x,y);
}
for(int i=1;i<=n;i++)
{
if(nrp[i]==0)
{
q.push(i);
}
}
while (!q.empty())
{
int x = q.front();
q.pop();
fout << x << " ";
for (int p = lst[x]; p != 0; p = v[p].urm)
{
int y = v[p].vf;
nrp[y]--;
if (nrp[y] == 0)
{
q.push(y);
}
}
}
return 0;
}