Вам дано дерево (простой связный граф без циклов).
Найдите максимальное количество ребер, которые вы можете удалить из дерева, чтобы получить лес, такой, чтобы каждый связанный компонент леса содержалчетное число узлов.
https://www.hackerrank.com/challenges/even-tree/problem
В приведенной выше ссылке приведены контрольные примеры.Для ввода сэмпла 1 я получаю 0 в качестве выхода вместо ожидаемого значения 2.
#include<stdio.h>
#include<stdlib.h>
int ans = 0;
int v, e;
int visited[201];
int gph[201][201];
int dfs(int i) {
int num_nodes;
int num_vertex = 0;
visited[i] = 1;
for (int j = 1; j <= v; j++) {
if (visited[i] == 0 && gph[i][j] == 1) {
num_nodes = dfs(j);
if (num_nodes % 2 == 0)
ans++;
else
num_vertex += num_nodes;
}
}
return num_vertex + 1;
}
int main() {
scanf("%d %d", &v, &e); // vertices and edges
int u, v;
for (int i = 0; i < e; i++) {
scanf("%d %d", &u, &v); //edges of undirected graph
gph[u][v] = 1;
gph[v][u] = 1;
}
dfs(1);
printf("%d", ans);
}
Контрольный пример:
10 9 2 1 3 1 4 3 5 2 6 17 2 8 6 9 8 10 8
Ожидаемый результат: 2
Фактический выход: 0