Помогите, пожалуйста. Сам dfs и вообще все в этом роде знаю, но выдает ошибку "cycle: идентификатор не найден". Как я понял, функцию из функции вызывать нельзя, но на моей памяти я это вроде как и делал.
P. S. Я понимаю, что мой код ужасен
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>
#include <vector>
#include <math.h>
#include <cmath>
#include <queue>
#include <stack>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
ifstream fin("cycle.in");
ofstream fout("cycle.out");
const ll inf = 1e18;
const ll mod = 1e9;
int parent[10002];
bool color[100002];
vector<int>ans;
vector<vector<int>>mas(100002);
int cycle(int index, int to) {
while (index != to) {
ans.push_back(index);
index = parent[index];
}
ans.push_back(to);
fout << "YES\n";
for (int i = ans.size() - 1; i >= 0; i--) fout << ans[i] << " ";
exit(0);
}
void dfs(int index, int p = -1) {
color[index] = 1;
parent[index] = p;
for (int i = 0; i < mas[index].size(); i++) {
if (color[mas[index][i]] == 1 && mas[index][i] != p) cycle(index, mas[index][i]);
dfs(mas[index][i], index);
}
}
int main() {
int n, m, from, to;
fin >> n >> m;
for (int i = 1; i <= n; i++) color[i] = 0;
for (int i = 1; i <= m; i++) { fin >> from >> to; mas[from].push_back(to); }
for (int i = 1; i <= n; i++) {
if (color[i] == 0) {
dfs(i);
}
}
fout << "NO";
}