Pagini recente » Cod sursa (job #578017) | Cod sursa (job #2302554) | Cod sursa (job #2998603) | Borderou de evaluare (job #2079077) | Cod sursa (job #913173)
Cod sursa(job #913173)
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int n, m;
bool edge[5005][5005];
vector<int> lista(0);
queue<int> set;
int main()
{
int i, j;
int x, y;
int node, ok;
freopen("sortaret.in", "r", stdin);
freopen("Sortaret.out", "w", stdout);
scanf("%d%d", &n, &m);
for (i = 0; i < m; i++)
{
scanf("%d%d", &x, &y);
edge[x][y] = 1;
}
for (i = 1; i <= n; i++)
{
ok = 1;
for (j = 1; j <= n; j++)
if (edge[j][i])
{
ok = 0;
break;
}
if (ok)
set.push(i);
}
while (!set.empty())
{
node = set.front();
set.pop();
lista.push_back(node);
for (i = 1; i <= n; i++)
if (edge[node][i])
{
edge[node][i] = 0;
ok = 1;
for (j = 1; j <= n; j++)
if (edge[j][i])
{
ok = 0;
break;
}
if (ok)
set.push(i);
}
}
for (i = 0; i < lista.size(); i++)
printf("%d ", lista[i]);
printf("\n");
return 0;
}