Pagini recente » Cod sursa (job #643020) | Cod sursa (job #1382867) | Cod sursa (job #1181598) | Cod sursa (job #1529307) | Cod sursa (job #1620935)
#include <fstream>
#include <vector>
#include <queue>
#define NMAX 50010
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n, m, i, j, k, x, y, crt, nrnoduri;
int grad[NMAX];
bool viz[NMAX];
vector <int> M[NMAX*2];
queue <int> q;
int main()
{
fin >> n >> m;
for(i = 1; i <= m; ++i)
{
fin >> x >> y;
M[x].push_back(y);
grad[y]++;
}
while(nrnoduri != n)///conditie
{
for(i = 1; i <= n; ++i)
if(grad[i] == 0 && viz[i] == false)
{
q.push(i);
viz[i] = true;
}
while(!q.empty())
{
crt = q.front();
q.pop();
fout << crt << ' ';
nrnoduri++;
for(j = 0; j < M[crt].size(); ++j)
{
grad[M[crt][j]]--;
if(grad[M[crt][j]] == 0)
q.push(M[crt][j]);
}
}
}
return 0;
}