#include <iostream> #include <vector> using namesp...

Erstellt am: 5. November 2026

Beantwortet mit GPT-6 von Chat01

Frage

#include <iostream>
#include <vector>
using namespace std;

vector < vector < int > > a;
vector < int > x1;
vector < bool > p;
int n, m, k = 0;

void DFS(int x){
p[x] = true; m++;
if (m == n && x1[x] == 1)
k++;
for (int i = 0; i < a[x].size(); i++)
if (!p[a[x][i]])
DFS(a[x][i]);
p[x] = false; m--;
}

int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> n >> m;
a.resize(n + 1);
for (int i = 0; i < m; i++){
int x, y;
cin >> x >> y;
a[x].push_back(y);
a[y].push_back(x);
}
p.resize(n + 1);
m = 0;
x1.resize(n + 1);
for (int i = 0; i < a[1].size(); i++)
x1[a[1][i]] = 1;
DFS(1);
cout << k;
return 0;
}
/**
9 17
1 2
1 3
1 5
1 6
2 3
2 4
2 5
2 9
3 4
3 6
3 7
3 8
4 8
4 9
5 9
6 7
7 8
*/

скинь txt тест который этот код будет выполнять +- 5 секунд

Gedanke

Benchmarked DFS runtime and created a complete-graph input

Worked for 22s

Antwort

Готово! Сделал TXT-тест для твоего DFS.

Скачать dfs_5_seconds.txt

12 вершин, 77 рёбер (включая повторные)

Проверил на твоём коде, скомпилированном с g++ -O2:

  • Время выполнения: 5,61 секунды
  • Результат: 79833600
  • Тип графа: полный граф с дополнительными повторными рёбрами от вершины 1.

На твоём компьютере время может отличаться из-за процессора и настроек компиляции.

Frage

он ообще не хочет выводить нечего у этого кода

Antwort

Text version

Это из-за того, что твой DFS перебирает все возможные простые пути в графе. На плотном графе количество вариантов огромное, поэтому программа долго работает и ничего не выводит до завершения DFS(1).

Ещё важный момент: в предыдущем тесте были повторяющиеся рёбра. Твой код не удаляет дубликаты, поэтому одни и те же пути перебираются многократно.

Чтобы проверить, что программа работает, попробуй сначала тест поменьше:

txt
9 17 1 2 1 3 1 5 1 6 2 3 2 4 2 5 2 9 3 4 3 6 3 7 3 8 4 8 4 9 5 9 6 7 7 8

Если хочешь именно тест на примерно 5 секунд, нужно подобрать его под скорость твоего компьютера и настройки компиляции.

Скажи, пожалуйста, ты запускаешь код в Visual Studio, Code::Blocks, VS Code или через онлайн-компилятор? Тогда я подберу TXT без повторяющихся рёбер, чтобы программа действительно завершалась примерно за 5 секунд.

Diesen Q&A teilen