Mai intai trebuie sa te autentifici.
Cod sursa(job #606584)
Utilizator | Data | 4 august 2011 21:23:13 | |
---|---|---|---|
Problema | Sortare topologica | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.71 kb |
# include <fstream>
# include <queue>
# include <vector>
using namespace std;
ifstream f ("sortaret.in");
ofstream g ("sortaret.out");
int n, m, x, y, ap[50010];
vector <int> A[50010];
queue <int> Q;
int main ()
{
f >> n >> m;
for (int i = 1; i <= m; ++i)
f >> x >> y, A[x].push_back (y), ++ap[y];
for (int i = 1; i <= n; ++i)
if (!ap[i]) Q.push (i);
for (; !Q.empty (); Q.pop ())
{
int ret = Q.front ();
g << ret << ' ';
for (vector <int> :: iterator it = A[ret].begin (); it != A[ret].end (); ++it)
{
--ap[*it];
if (!ap[*it])
Q.push (*it);
}
}
g.close ();
return 0;
}