Pagini recente » Cod sursa (job #1186266) | Cod sursa (job #1560716) | Cod sursa (job #2243598) | Cod sursa (job #2550530) | Cod sursa (job #2202844)
#include <fstream>
#include <vector>
using namespace std;
vector <int> v[50002];
int n,m,i,a,b,p,t,grad[50002],c[50002];
bool viz[50002];
int main()
{
ifstream f("sortaret.in");
ofstream g("sortaret.out");
f>>n>>m;
for(i=1;i<=m;i++)
{
f>>a>>b;
v[a].push_back(b);
grad[b]++;
}
for(i=1;i<=n;i++)
if(grad[i]==0)
{
c[++t]=i;
viz[i]=1;
}
p=1;
while(p<=t)
{
for(i=0;i<v[c[p]].size();i++)
if(viz[v[c[p]][i]]==0)
{
grad[v[c[p]][i]]--;
if(grad[v[c[p]][i]]<=0)
{
viz[v[c[p]][i]]=1;
c[++t]=v[c[p]][i];
}
}
p++;
}
for(i=1;i<=t;i++)
g<<c[i]<<' ';
return 0;
}