Pagini recente » Rotatie lexicografic minima | Cod sursa (job #1247974) | Cod sursa (job #1873080) | Cod sursa (job #682158) | Cod sursa (job #3251503)
#include <iostream>
#include <vector>
#include <fstream>
#include <algorithm>
#define ALB 0
#define GRI 1
#define NEGRU 2
#define Mmax 100000
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
vector<int> g[Mmax + 5];
vector<int> sol;
int color[Mmax/2 +5];
int n , m , x , y;
void DFS(int nod)
{
color[nod]=GRI;
for(auto i : g[nod])
{
if(color[i]==ALB)
DFS(i);
}
color[nod]=NEGRU;
sol.push_back(nod);
}
int main()
{
fin>>n>>m;
for(int i=1;i<=m;i++)
{
fin>>x>>y;
g[x].push_back(y);
}
for(int i=1;i<=n;i++)
{
if(color[i]==ALB)
DFS(i);
}
reverse(sol.begin(),sol.end());
for(auto i : sol)
fout<<i<<' ';
return 0;
}