Pagini recente » Cod sursa (job #426232) | Profil mihaipriboi | Cod sursa (job #3150225) | Cod sursa (job #383759) | Cod sursa (job #2958714)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strazi.in");
ofstream fout("strazi.out");
int n, m, in[256];
vector <int> g[256];
struct edge {
int x, y;
};
vector <edge> add;
vector <int> r;
int dfs(int nod)
{
r.push_back(nod);
bool ok = false;
int last = -1;
for (auto& i : g[nod])
{
if (in[i] > 1)
{
in[i]--;
continue;
}
ok = true;
if (last != -1)
add.push_back({ last, i });
last = dfs(i);
}
if (last == -1)
return nod;
return last;
}
int main() {
fin >> n >> m;
for (int i = 1; i <= m; i++)
{
int x, y;
fin >> x >> y;
g[x].push_back(y);
in[y]++;
}
int last = -1;
for (int i = 1; i <= n; i++)
if (!in[i])
{
if (last != -1)
add.push_back({ last, i });
last = dfs(i);
}
fout << add.size() << '\n';
for (auto& i : add)
fout << i.x << ' ' << i.y << '\n';
for (auto& i : r)
fout << i << ' ';
return 0;
}