Pagini recente » Cod sursa (job #3242259) | Cod sursa (job #2263600) | Cod sursa (job #421720) | Cod sursa (job #868979) | Cod sursa (job #885743)
Cod sursa(job #885743)
#include <fstream>
#include <vector>
#include <queue>
#define NM 50010
using namespace std;
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int N, M;
int i, j, a, b;
vector<int> G[NM];
int ANS[NM];
vector<int>::iterator it;
queue<int> Q;
int GR[NM];
bool In[NM];
int main ()
{
f >> N >> M;
for (i=1; i<=M; i++)
{
f >> a >> b;
GR[b]++;
G[a].push_back(b);
}
for (i=1; i<=N; i++)
if (GR[i]==0)
{
Q.push(i);
In[i]=1;
}
while (!Q.empty())
{
a=Q.front();
Q.pop();
ANS[++ANS[0]]=a;
for (it=G[a].begin(); it!=G[a].end(); ++it)
if (!In[*it])
{
GR[*it]--;
if (GR[*it]==0)
{
Q.push(*it);
In[*it]=1;
}
}
}
for (i=1; i<=N; i++)
g << ANS[i] << ' ';
g << '\n';
f.close();
g.close();
return 0;
}