Pagini recente » Cod sursa (job #1424387) | Cod sursa (job #3166685) | Cod sursa (job #1366297) | Cod sursa (job #2891358) | Cod sursa (job #1239404)
#include<stdio.h>
#include<conio.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];
void 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);
}
}