Pagini recente » Cod sursa (job #463385) | Cod sursa (job #2801824) | Cod sursa (job #1269219) | Cod sursa (job #564934) | Cod sursa (job #1124745)
#include <cstdio>
#include <vector>
#define nmax 50010
using namespace std;
vector <int> a[nmax];
vector <int> sol;
int gr[nmax];bool bf[nmax];
FILE *f,*g;
int n,m;
void read()
{
int i,x,y;
f=fopen("sortaret.in","r");
g=fopen("sortaret.out","w");
fscanf(f,"%d%d",&n,&m);
for (i=1;i<=m;i++) {
fscanf(f,"%d%d",&x,&y);
gr[y]++;
a[x].push_back(y);
}
}
void df(int x)
{
int i;
bf[x]=true;
for (i=0;i<a[x].size();i++)
if (bf[a[x][i]]==false)
df(a[x][i]);
sol.push_back(x);
}
void solve()
{
int i;
for (i=1;i<=n;i++)
if (gr[i]==0)
df(i);
}
void write()
{
int i;
for (i=sol.size()-1;i>=0;i--)
fprintf(g,"%d ",sol[i]);
fclose(g);
}
int main() {
read();
solve();
write();
}