Pagini recente » Cod sursa (job #1885552) | Cod sursa (job #2272083) | Cod sursa (job #1145339) | Cod sursa (job #1238871) | Cod sursa (job #946941)
Cod sursa(job #946941)
#include <fstream>
#include <vector>
#include <bitset>
#define In "sortaret.in"
#define Out "sortaret.out"
#define Nmax 50005
using namespace std;
vector< int >G[Nmax];
bitset< Nmax > viz;
int post_ordine[Nmax],n;
inline void Citire()
{
int m,x,y;
ifstream f(In);
f>>n>>m;
while(m--)
{
f>>x>>y;
G[x].push_back(y);
}
}
inline void Dfs(int nod)
{
viz[nod] = true;
for(vector< int >::iterator vec = G[nod].begin();vec!=G[nod].end();vec++)
if(viz[*vec]==false)
Dfs(*vec);
post_ordine[++post_ordine[0]] = nod;
}
inline void Sortare_topologica()
{
for(int i=1;i<=n;i++)
if(viz[i]==false)
Dfs(i);
}
inline void Afisare()
{
ofstream g(Out);
for(int i=n;i;i--)
g<<post_ordine[i]<<" ";
g<<"\n";
g.close();
}
int main()
{
Citire();
Sortare_topologica();
Afisare();
return 0;
}