Pagini recente » Cod sursa (job #2546223) | Cod sursa (job #316561) | Cod sursa (job #2120928) | Cod sursa (job #672923) | Cod sursa (job #2664001)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
//daca exista un arc ( i, j ), atunci i apare inaintea lui j in sortare
vector<int> adiacenta[100009];
vector <int> sortare;
bool vizitat[100009] = {false};
void DFS(int nod)
{
vizitat[nod] = true;
for(size_t i=0; i< adiacenta[nod].size(); i++)
{
if(!vizitat[adiacenta[nod][i]])
{
vizitat[i] = true;
DFS(adiacenta[nod][i]);
}
}
sortare.push_back(nod);
}
int main()
{
int N,M,x,y;
in>>N>>M;
for(int i =1; i <=M ;i++)
{
in>>x>>y;
adiacenta[x].push_back(y);
//graf orientat x y muchie => fdoar x e vecinul lui y
}
sortare.clear();
for(int i = 1; i <= N; i++)
{
if(!vizitat[i])
{
DFS(i);
}
}
reverse(sortare.begin(), sortare.end());
for(size_t i=0; i< sortare.size(); i++)
out<<sortare[i]<<" ";
out<<"\n";
return 0;
}