Pagini recente » Cod sursa (job #431321) | Cod sursa (job #1212946) | Cod sursa (job #347789) | Cod sursa (job #2990545) | Cod sursa (job #151509)
Cod sursa(job #151509)
#include <stdio.h>
#include <string.h>
//using namespace std;
int p[100],w[100],q[100],a[100][100],n,m,c,v,o;
void citire()
{
freopen("topo.in","r",stdin);
scanf("%d%d", &n, &m);
int x,y,i;
for(i=0; i<m; i++)
{
scanf("%d%d", &x, &y);
a[x][y]=1;
}
c=-1;
int q;
for (i=1; i<=n; i++)
{
q=0;
for (int j=1; j<=n; j++)
if (a[j][i]==1)
{
q=1;
break;
}
if (q==0)
{
w[++c]=i;
a[i][0]=1;
}
}
fclose(stdin);
}
void sortare()
{
o=-1;
int i;
while (c>-1)
{
v=-1;
for (i=0; i<=c; i++)
{
for (int j=1; j<=n; j++)
a[w[i]][j]=0;
p[++o]=w[i];
}
int b;
for (i=1; i<=n; i++)
{
b=0;
if (a[i][0]==0)
{
for (int j=1; j<=n; j++)
if (a[j][i]==1)
{
b=1;
break;
}
if (b==0)
{
q[++v]=i;
a[i][0]=1;
}
}
}
memcpy(w,q,sizeof(q));
c=v;
}
}
int main()
{
citire();
sortare();
for (int i=0; i<=o; i++)
printf("%d ",p[i]);
return 0;
}