Pagini recente » Cod sursa (job #94091) | Cod sursa (job #1882642) | Borderou de evaluare (job #1569663) | Cod sursa (job #1389512) | Cod sursa (job #2062691)
#include <bits/stdc++.h>
using namespace std;
ifstream in("sortaret.in");
ofstream out("sortaret.out");
int n, m, x, y;
unsigned int poz;
int v[50005];
vector<int> lista[50005];
vector<int>::iterator it;
void dfs( int nod, vector<int>& stiva ){
v[nod] = 1;
for(unsigned int i = 0; i < lista[nod].size(); i++)
if( v[ lista[nod][i] ] == 0 )
dfs( lista[nod][i], stiva );
stiva.push_back( nod );
}
vector<int> sortare(){
int i;
vector<int> stiva;
for(i = 1; i <= n; i++)
if( v[i] == 0 )
dfs( i, stiva );
reverse( stiva.begin(), stiva.end() );
return stiva;
}
int main()
{
in>>n>>m;
for(int i = 1; i <= m; i++){
in>>x>>y;
it = lista[x].begin();
poz = 0;
while( poz != lista[x].size() && lista[x][poz] < y )
poz++;
lista[x].insert(it + poz, y);
}
vector<int> st = sortare();
for(int i = 0; i < st.size(); i++)
out<<st[i]<<" ";
return 0;
}