Pagini recente » Cod sursa (job #3156160) | Cod sursa (job #1605816) | Monitorul de evaluare | Cod sursa (job #3336911) | Cod sursa (job #2419677)
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
int main()
{
int N,M;
int a,b,j=-1;
FILE *in=fopen("sortaret.in","r");
FILE *out=fopen("sortaret.out","w");
fscanf(in,"%i %i",&N,&M);
queue <int> q;
vector <vector<int>> g(N);
int gradInt[N],sol[N];
for(int x=0;x<N;x++)
gradInt[x]= 0;
for(int x=0;x<M;x++)
{
fscanf(in,"%i %i",&a,&b);
a--; b--;
g[a].push_back(b);
g[b].push_back(a);
gradInt[b]++;
}
for(int x=0;x<N;x++)
if(gradInt[x] == 0)
{
q.push(x);
sol[++j] = x;
}
while(!q.empty())
{
for(auto x:g[q.front()])
{
if(!(--gradInt[x]))
{
q.push(x);
sol[++j] = x;
}
}
q.pop();
}
for(int x=0;x<N;x++)
fprintf(out,"%i ",sol[x]);
return 0;
}