Pagini recente » Borderou de evaluare (job #1858109) | Atasamentele paginii Profil | Atasamentele paginii Profil mindru | Cod sursa (job #3212943) | Cod sursa (job #2001560)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
vector<int> edge[50001], list;
int visited[50001], ideg[50001], n, m;
void Kahn()
{
vector<int> sortedL;
while (!list.empty())
{
int t = list.back();
sortedL.push_back(t);
list.pop_back();
for (int i = 0; i < edge[t].size(); i++)
{
int q = edge[t][i];
edge[t].erase(edge[t].begin());
i--;
ideg[q]--;
if (ideg[q] == 0)
list.push_back(q);
}
}
for (vector<int>::iterator it = sortedL.begin(); it != sortedL.end(); it++)
g << *it << " ";
}
int main()
{
int i;
f >> n >> m;
for (i = 0; i < m; i++)
{
int c, d;
f >> c >> d;
edge[c].push_back(d);
ideg[d]++;
}
for (i = n; i > 0; i--)
if (ideg[i] == 0)
list.push_back(i);
Kahn();
return 0;
}