Pagini recente » Cod sursa (job #1536731) | Cod sursa (job #2259543) | Cod sursa (job #1349064) | Cod sursa (job #1854525) | Cod sursa (job #1008220)
# include <iostream>
# include <fstream>
# include <queue>
# include <vector>
# define max_m 100000
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
queue <int> coada;
vector <int> v[max_m];
bool verif[max_m];
int n,m,nrv,grad[max_m];
void solve()
{
int i,aux;
while(coada.size()>0)
{
aux=coada.front();
g<<aux<<" ";
coada.pop();
for(i=0; i<v[aux].size(); i++)
grad[v[aux][i]]-=1;
}
}
void tip()
{
int i,j;
for(i=1; i<=n; i++)
{
cout<<i<<" ";
for(j=0; j<v[i].size(); j++)
cout<<v[i][j]<<" ";
cout<<'\n';
}
}
int main()
{
int i,j,x,y;
f>>n>>m;
for(i=1; i<=m; i++)
{
f>>x>>y;
v[x].push_back(y);
grad[y]+=1;
}
//tip();
while(nrv<n)
{
for(i=1; i<=n; i++)
{
if((grad[i]==0)&&(verif[i]==0))
{
nrv+=1;
verif[i]=1;
coada.push(i);
}
}
solve();
}
return 0;
}