Pagini recente » Cod sursa (job #992794) | Cod sursa (job #666509) | Cod sursa (job #1784917) | Cod sursa (job #2854308) | Cod sursa (job #1990020)
#include<iostream>
#include<fstream>
#include<string.h>
#include<vector>
#include<queue>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int n,m,b[50005],nr,c[50005];
vector<int >a[50005];
queue<pair<int,int> >q;
void ve()
{
int nod;
while(!q.empty())
{
nod=q.front().first;
c[q.front().second]=nod;
q.pop();
for(int i=0;i<a[nod].size();i++)
if(b[a[nod][i]]!=-1)
{
b[a[nod][i]]--;
if(b[a[nod][i]]!=-1)
{
nr++;
q.push(make_pair(a[nod][i],nr));
}
}
b[nod]=-1;
}
}
int main()
{
fin>>n>>m;
for(int h=1;h<=m;h++)
{
int i,j;
fin>>i>>j;
b[i]++;
a[i].push_back(j);
}
for(int i=1;i<=n;i++)
if(b[i]!=-1)
{
nr++;
q.push(make_pair(i,nr));
ve();
}
for(int i=1;i<=n;i++)
fout<<c[i]<<' ';
}