Моя программа выдает неправильный вывод для тестовых случаев, отличных от 1. Я понял, что должен изменить значения каждого элемента в vec
и посещении на 0. Я могу сделать это для посещенных, но получаю ошибку для vec
.
#include <bits/stdc++.h>
using namespace std;
vector <int> vec[100001];
int visited[100001];
void dfs(int node)
{
visited[node] = 1;
for (int child : vec[node])
{
if (!visited[child])
dfs(child);
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--)
{
int n, e, a, b;
cin >> n;
cin >> e;
for (int i = 0; i < e; ++i)
{
cin >> a >> b;
vec[a].push_back(b);
vec[b].push_back(a);
}
long long c = 0;
for (int i = 0; i < n; ++i)
{
if (!visited[i])
{
dfs(i);
++c;
}
}
cout << c << '\n';
memset(visited, 0, sizeof(visited));
fill(vec.begin(), vec.end(), 0);
}
}
Я использовал memset()
для посещенных и fill()
для ве c. Как решить эту проблему? Ввод:
2
4
2
0 1
0 2
8
0
Ожидаемый вывод:
2
8
Выход:
CC.cpp: In function 'int main()':
CC.cpp:47:18: error: request for member 'begin' in 'vec', which is of non-class type 'std::vector<int> [100001]'
fill(vec.begin(), vec.end(), 0);
^
CC.cpp:47:31: error: request for member 'end' in 'vec', which is of non-class type 'std::vector<int> [100001]'
fill(vec.begin(), vec.end(), 0);
Если удалить строку с fill()
: Выход:
2
6
Программа для определения количества подключенных компонентов на графике.