Pagini recente » Cod sursa (job #2304216) | Cod sursa (job #1803030)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
#define NMax 50005
vector<int> G[NMax];
int Q[NMax];
int gr[NMax],n,m;
void read()
{
f>>n>>m;
for(int i=1; i<=m; ++i)
{
int a,b;
f>>a>>b;
G[a].push_back(b);
gr[b]++;
}
for(int i=1;i<=n;++i) g<<gr[i]<<' ';
g<<endl;
}
void solve()
{
vector<int>::iterator it;
int i,x;
for(i=1; i<=n; ++i)
if(gr[i]==0) Q[++Q[0]]=i;
for(i=1; i<=n; ++i)
{
x=Q[i];
for(it=G[x].begin(); it!=G[x].end(); ++it)
{
gr[*it]--;
if(gr[*it]==0) Q[++Q[0]]=*it;
}
}
}
void write()
{
for(int i=1; i<=n; ++i) g<<Q[i]<<' ';
}
int main()
{
read();
solve();
write();
return 0;
}