Pagini recente » Cod sursa (job #1859813) | Cod sursa (job #3189678) | Cod sursa (job #2136997) | Cod sursa (job #93578) | Cod sursa (job #150892)
Cod sursa(job #150892)
#include<fstream.h>
#define nmax 50100
#define mmax 100100
ifstream f("sortaret.in");
ofstream g("sortaret.out");
int n, m, a[mmax], st[nmax], coada[nmax], grad[nmax];
void citire()
{
int i, x, y, sum;
f>>n>>m;
for(i=1; i<=m; i++){
f>>x>>y;
st[x]++;
grad[y]++;
}
f.close();
sum=0;
for(i=1; i<=n+2; i++){
st[i-1]=sum;
sum=sum+st[i];
}
ifstream f("sortaret.in");
f>>n>>m;
for(i=1; i<=m; i++){
f>>x>>y;
a[st[x]]=y;
st[x]--;
}
f.close();
}
void rezolva()
{
int i, cap_s=1, cap_d=0;
for(i=1; i<=n; i++) if( !grad[i] ) coada[++cap_d]=i;
while(cap_s<=cap_d){
for(i=st[cap_s]+1; i<=st[cap_s+1]; i++){
grad[a[i]]--;
if( !grad[a[i]] ) coada[++cap_d]=a[i];
}
cap_s++;
}
}
int main()
{
int i;
citire();
rezolva();
for(i=1; i<=n; i++) g<<coada[i]<<' ';
g.close();
return 0;
}