Pagini recente » Cod sursa (job #178638) | Cod sursa (job #3170561) | Cod sursa (job #1427011) | Cod sursa (job #1170996) | Cod sursa (job #3255863)
#include<fstream>
using namespace std;
ifstream fin("sortaret.in");
ofstream fout("sortaret.out");
int a[1001][1001],d[1001],c[1001];
int n,i,j,m,x,y,u,p;
int main()
{
fin>>n>>m;
for(i=1;i<=m;i++)
{
fin>>x>>y;
a[x][y]=1; //se creează matricea de adiacență
d[y]++; //se reține gradul intern al nodului y
}
u=1; p=1;
for(i=1;i<=n;i++)
if(d[i]==0)
{
c[u]=i; //se adaugă la coadă nodurile care au gradul intern 0
u++;
}
while(p<=u)
{
x=c[p];
for(i=1;i<=n;i++)
if(a[x][i]==1)
{
d[i]--; //dacă i este vecin al nodului x, se scade gradul său intern
if(d[i]==0) //dacă gradul intern al nodului i se adăugă la coadă
{
c[u]=i;
u++;
}
}
p++;
}
int gasit=0;
for(i=1;i<=n;i++)
if(d[i]>0)
gasit=1;
if(gasit==1)
fout<<"graful are circuite";
else
for(i=1;i<=n;i++)
fout<<c[i]<<" ";
return 0;
}