Pagini recente » Cod sursa (job #1439317) | Cod sursa (job #325464) | Cod sursa (job #2707708) | Cod sursa (job #3164136) | Cod sursa (job #1239411)
#include<stdio.h>
#include<vector>
#include<queue>
using namespace std;
#define MAX 50001
#define pb push_back
vector<int> G[MAX] ;
queue<int> Q;
int N , M , grad[MAX];
int main()
{
int x , y , nod , vecin;
freopen("sortaret.in" , "r" , stdin );
freopen("sortaret.out" , "w" , stdout );
scanf("%d%d" , &N , &M );
for(int i = 1 ; i <= M ; ++i )
{
scanf("%d%d" , &x , &y );
G[x].pb(y);
G[y].pb(x);
grad[x]++;
grad[y]++;
}
for(int i = 1 ; i <= N ; ++i )
if(grad[i]==1)Q.push(i);
for(;!Q.empty();Q.pop())
{
nod = Q.front();
printf("%d " , nod);
vecin = G[nod][0];
G[nod].erase(G[nod].begin());
for(vector<int>::iterator it = G[nod].begin() ; it != G[nod].end() ; ++it )
if(*it == nod)
{
G[vecin].erase(it);
break;
}
grad[vecin]--;
if(grad[vecin]==1)Q.push(vecin);
}
return 0;
}