Pagini recente » Cod sursa (job #161859) | Cod sursa (job #1190789) | Cod sursa (job #1248680) | Istoria paginii utilizator/florinvladut | Cod sursa (job #2355150)
#include <iostream>
#include <fstream>
#include <cmath>
#include <vector>
#include <queue>
#include <stack>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n;
int m;
typedef struct
{
vector <int> v;
}adjList;
adjList a[50001];
int visited[50001];
stack<int> st;
void dfs(int source)
{
visited[source]=1;
for(vector<int>::iterator it = a[source].v.begin(); it != a[source].v.end(); it++)
{
int y=*it;
if(visited[y]==0)
{
dfs(y);
}
}
st.push(source);
}
int main()
{
int x, y;
fin>>n>>m;
for(int i=1; i<=m; i++)
{
fin>>x>>y;
a[x].v.insert(a[x].v.begin(), y);
}
for(int i=1; i<=n; i++)
{
if(visited[i]==0)
{
dfs(i);
while(!st.empty())
{
fout<<st.top()<<" ";
st.pop();
}
}
}
return 0;
}