Pagini recente » Cod sursa (job #1264486) | Cod sursa (job #2878705) | Cod sursa (job #198050) | Cod sursa (job #2489770) | Cod sursa (job #468818)
Cod sursa(job #468818)
#include<cstdio>
#include<vector>
#include<queue>
#define N 1<<16
#define in "sortaret.in"
#define out "sortaret.out"
using namespace std;
vector<int> L[N];
int n,m,l,c,Q[N],pred[N];
void read()
{
int x,y;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
bool ok=false;
for(vector<int>::iterator it=L[x].begin();it!=L[x].end();it++)
if(*it==y)
ok=true;
if(ok==false)
{
L[x].push_back(y);
pred[y]++;
}
}
}
void init()
{
for(int i=1;i<=n;i++)
if(pred[i]==0)
Q[++l]=i;
}
void solve()
{
c=0;
while(c<l)
{
c++;
for(vector<int>::iterator it=L[Q[c]].begin();it!=L[Q[c]].end();it++)
{
pred[*it]--;
if(pred[*it]==0)
Q[++l]=*it;
}
}
}
void afis()
{
for(int i=1;i<=n;i++)
printf("%d ",Q[i]);
}
int main()
{
read();
init();
solve();
afis();
return 0;
}