Pagini recente » Cod sursa (job #1551441) | Cod sursa (job #1283872) | Cod sursa (job #293991) | Cod sursa (job #2569649) | Cod sursa (job #988818)
Cod sursa(job #988818)
#include "stdio.h"
#include <vector>
using namespace std;
FILE *in,*out;
int i,j,k,l,m,n,nex;
int a[100000],b[100000],d[50000],f[50000];
vector <int> c[50000];
bool e[50000];
int main()
{
for (i=0; i<50000; i++)
{
d[i]=0;
e[i]=false;
}
k=0;
nex=0;
in=fopen("sortaret.in","r");
fscanf(in,"%d %d",&n,&m);
for (i=0; i<m; i++)
{
fscanf(in,"%d %d",&a[i],&b[i]);
c[b[i]-1].push_back(a[i]-1);
d[a[i]-1]++;
}
fclose(in);
for (j=0; j<n; j++)
{
if (nex==0)
{
for (i=0; i<n; i++)
{
if ((d[i]==0) && (e[i]==false))
{
e[i]=true;
f[k]=i;
k++;
for (l=0; l<c[i].size(); l++)
{
d[c[i][l]]--;
if (d[c[i][l]]==0) nex=c[i][l];
}
break;
}
}
} else
{
i=nex;
nex=0;
e[i]=true;
f[k]=i;
k++;
for (l=0; l<c[i].size(); l++)
{
d[c[i][l]]--;
if (d[c[i][l]]==0) nex=c[i][l];
}
}
}
out=fopen("sortaret.out","w");
for (i=n-1; i>=0; i--)
fprintf(out,"%d ",f[i]+1);
return 0;
}