Pagini recente » Cod sursa (job #3120613) | Cod sursa (job #3237527) | Cod sursa (job #917892) | Cod sursa (job #1482677) | Cod sursa (job #715429)
Cod sursa(job #715429)
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
#define MAX_N 50001
int n,m,vizitat[MAX_N];
vector<int> gr[MAX_N],st;
void citeste_graf(void)
{
freopen("sortaret.in","r",stdin);
int i,x,y;
scanf("%d %d",&n,&m);
for(i=1; i<=m; i++)
{
scanf("%d %d",&x,&y);
gr[x].push_back(y);
}
fclose(stdin);
}
void dfs(int nod)
{
vector<int> ::iterator i;
vizitat[nod]=1;
for(i=gr[nod].begin(); i!=gr[nod].end(); i++)
if(!vizitat[*i])
dfs(*i);
st.push_back(nod);
}
void sortare_topologica(void)
{
int i;
for(i=1; i<=n; i++)
if(!vizitat[i])
dfs(i);
reverse(st.begin(),st.end());
}
void afiseaza_solutie(void)
{
freopen("sortaret.out","w",stdout);
vector<int> ::iterator i;
for(i=st.begin(); i!=st.end(); i++)
printf("%d ",*i);
fclose(stdout);
}
int main()
{
citeste_graf();
sortare_topologica();
afiseaza_solutie();
return 0;
}