Pagini recente » Cod sursa (job #351657) | Monitorul de evaluare | Cod sursa (job #358001) | Cod sursa (job #1623145) | Cod sursa (job #2192092)
#include <fstream>
#include <vector>
#define maxn 50000
using namespace std;
vector <int> v[maxn+5];
int sz[maxn+5];
int grad[maxn+5];
int qu[maxn+5]; /// coada in care introduc nodurile de grad 0
int main ()
{
ifstream fin ( "sortaret.in" );
ofstream fout ( "sortaret.out" );
int n, m; /// varfuri muchii
fin >> n >> m;
int i, a, b;
for ( i = 0; i < m; i++ )
{
fin >> a >> b;
a--; b--;
v[a].push_back ( b );
sz[a]++;
grad[b]++;
}
int st = 0, dr = -1;
for ( i = 0; i < n; i++ )
if ( grad[i] == 0 )
qu[++dr] = i;
int nod, nn;
while ( st <= dr )
{
nod = qu[st];
fout << nod + 1 << ' ';
for ( i = 0; i < sz[nod]; i++ )
{
nn = v[nod][i];
grad[nn]--;
if ( grad[nn] == 0 )
qu[++dr] = nn;
}
st++;
}
fin.close ();
fout.close ();
return 0;
}