Pagini recente » Cod sursa (job #3218220) | Cod sursa (job #1634292) | Cod sursa (job #2381311) | Cod sursa (job #2375905) | Cod sursa (job #2871886)
#include <iostream>
#include <fstream>
#include <stack>
using namespace std;
const int INF=1e9;
void DFS (int** a,int n,bool viz[],int k,ofstream& writer,stack<int>& q)
{
viz[k]=true;
for(int i=0;i<n;++i)
if(a[k][i]&&!viz[i])
DFS(a,n,viz,i,writer,q);
q.push(k);
}
int main()
{
ifstream reader ("sortaret.in");
ofstream writer ("sortaret.out");
int n,m;
reader>>n>>m;
int** a = new int* [n];
for(int i=0;i<n;++i)
a[i]=new int [n];
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
a[i][j]=0;
int x,y;
for(int i=0;i<m;++i)
{
reader>>x>>y;
x--;
y--;
a[x][y]=1;
}
stack <int> q;
bool viz[n];
for(int i=0;i<n;++i)
viz[i]=false;
for(int i=0;i<n;++i)
if(!viz[i])
DFS(a,n,viz,i,writer,q);
while(!q.empty())
{
writer<<q.top()+1<<" ";
q.pop();
}
return 0;
}