Pagini recente » Statistici Martin Nicoleta (nicoleta_martin) | Cod sursa (job #1714606) | Cod sursa (job #3296575) | Cod sursa (job #2595995) | Cod sursa (job #2133835)
#include <fstream>
#include<iostream>
#include <queue>
using namespace std;
#define MAXN 50000
int N, M, gradeIn[MAXN+1];
queue<int> succesori[MAXN+1], coadaNoduriDeGrad0;
#define getCoada(el, c) {\
el=c.front();\
c.pop();\
}
void citire(void)
{
int i, a, b;
ifstream fin("sortaret.in", ios::in);
fin>>N>>M;
for(i = 1; i <= M; i++)
{
fin>>a>>b;
succesori[a].push(b);
gradeIn[b]++;
}
fin.close();
}
void calcul(void)
{
ofstream fout("sortaret.out", ios::out);
int i, x, vecinul;
for(x = 1; x <= N; x++)
{
if( !gradeIn[x])
coadaNoduriDeGrad0.push(x);
}
for(i = 1; i <= N; i++)
{
getCoada(x, coadaNoduriDeGrad0);
//x = coadaNoduriDeGrad0.front();
//coadaNoduriDeGrad0.pop();
fout<<x<<" ";
while(!succesori[x].empty())
{
getCoada(vecinul, succesori[x]);
//vecinul=succesori[x].front();
//succesori[x].pop();
gradeIn[vecinul]--;
if(gradeIn[vecinul] == 0)
{
coadaNoduriDeGrad0.push(vecinul);
}
}
}
fout<<endl;
fout.close();
}
int main(void)
{
return 0;
bool vecheaValoare=istream::sync_with_stdio(false);
citire();
calcul();
istream::sync_with_stdio(vecheaValoare);
return 0;
}