Pagini recente » Cod sursa (job #343704) | Cod sursa (job #1986693) | Cod sursa (job #3177894) | Cod sursa (job #2662517) | Cod sursa (job #1112670)
#include<cstdio>
#include<queue>
#include<vector>
#define pb push_back
#define N_MAX 50010
using namespace std;
vector <int> G[N_MAX];
queue <int> Q;
queue <int> Sol;
bool use[N_MAX],N;
inline void BFS()
{
if (Q.empty()) return;
int Nod=Q.front();
for (vector <int> :: iterator it=G[Nod].begin();it!=G[Nod].end();++it)
if (!use[*it]) {use[*it]=true; Q.push(*it); Sol.push(*it);}
Q.pop();
BFS();
}
inline void Load_Data()
{
int M,x,y;
scanf("%d%d",&N,&M);
for (int i=1;i<=M;++i) {scanf("%d%d",&x,&y); G[y].pb(x);}
for (int i=1;i<=N;++i) use[i]=false;
Q.push(1); Sol.push(1); use[1]=true;
}
inline void Write_Sol()
{
for (int i=1;i<=N;++i)
if (!use[i]) Sol.push(i);
while (!Sol.empty())
printf("%d ",Sol.front()), Sol.pop();
printf("\n");
}
int main()
{
freopen("sortaret.in","r",stdin);
freopen("sortaret.out","w",stdout);
Load_Data();
BFS();
Write_Sol();
fclose(stdin); fclose(stdout);
return 0;
}