Pagini recente » Cod sursa (job #94838) | Cod sursa (job #1724684) | Cod sursa (job #2716827) | Cod sursa (job #2040675) | Cod sursa (job #2045491)
#include<fstream>
#include<list>
#include<deque>
#include<bitset>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
const int VMAX=50000;
list<int>g[VMAX];
deque<int>sol;
bitset<VMAX>isNotIsolated;
int vertices,edges;
void read_data(){
int from,to;
fin>>vertices>>edges;
while(edges--){
fin>>from>>to;
g[from].push_back(to);
}
}
void BFS(){
int i,v;
deque<int>d;
for(i=1;i<=vertices;++i)
if(g[i].size()){
isNotIsolated[i]=1;
d.push_back(i);
sol.push_back(i);
i=vertices+1;
}
list<int>:: iterator next_node;
while(!d.empty()){
v=d.front();
d.pop_front();
for(next_node=g[v].begin();next_node!=g[v].end();++next_node)
if(!isNotIsolated[*next_node]){
isNotIsolated[*next_node]=1;
d.push_back(*next_node);
sol.push_back(*next_node);
}
}
}
void print(){
while(!sol.empty()){
fout<<sol.front()<<' ';
sol.pop_front();
}
int i;
for(i=1;i<=vertices;++i)
if(!isNotIsolated[i])
fout<<i<<' ';
}
int main(){
read_data();
BFS();
print();
}