Pagini recente » Cod sursa (job #975857) | Cod sursa (job #735404) | Cod sursa (job #2028508) | Cod sursa (job #3250982) | Cod sursa (job #1378290)
#include <fstream>
#include <cstring>
#include <vector>
#include <stack>
#include <queue>
using namespace std;
vector<int>* Graf;
stack<int> que;
bool* Viz;
int N, M;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
void Citire()
{
in >> N >> M;
Graf = new vector<int>[N + 1];
Viz = new bool[N + 1];
memset(Viz, 0, sizeof(bool) * (N + 1));
for (int x, y, i = 1; i <= M; ++i)
{
in >> x >> y;
Graf[x].push_back(y);
}
}
void DFS(int x)
{
int i;
Viz[x] = true;
for (i = 0; i < Graf[x].size(); ++i)
{
if (!Viz[Graf[x][i]])
{
DFS(Graf[x][i]);
}
}
que.push(x);
}
int main()
{
Citire();
for (int i = 1; i <= N; ++i)
if (!Viz[i])
DFS(i);
while (!que.empty())
{
out << que.top() << " ";
que.pop();
}
return 0;
}