Napisałem kod do zadania: https://szkopul.edu.pl/problemset/problem/wrTmzO9-dzEbLtsRUCdMV2_W/site/?key=statement . Dla przykładowego testu program odpalany u mnie (w CodeBlocks) działa i zwraca poprawny wynik lecz gdy wysyłam go do sprawdzenia dostaję komunikat process exited due to signal 11, a czasami signal 6. Wiem, że oznacza to, że wychodzę poza zakres tablicy ale nie mogę zlokalizować błędu.
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 7;
vector <int> G[MAXN];
queue <int> q;
bool lewy[MAXN];
bool visited[MAXN];
double long odl[MAXN];
int BFS(int v)
{
q.push(v);
visited[v] = 1;
while(!q.empty())
{
v = q.front();
q.pop();
for (int i = 0; i < G[v].size(); i++)
{
int u = G[v][i];
if (!visited[u])
{
if(lewy[u]) odl[u] = odl[v]*2;
else odl[u] = (odl[v]*2) + 1;
q.push(u); visited[u] = 1;
}
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, z;
int x, y;
odl[1] = 0;
cin >> n;
cin >> x >> y;
G[1].push_back(x);
G[1].push_back(y);
odl[x] = 0; lewy[x] = 1;
odl[y] = 1;
for(int i = 2; i <= n; i++)
{
cin >> x >> y;
if(x) G[i].push_back(x);
if(y) G[i].push_back(y);
lewy[x] = 1;
}
BFS(1);
cin >> z;
for(int i = 0; i < z; i++)
{
cin >> x >> y;
if(odl[x] >= odl[y]) cout<<"TAK\n";
else cout << "NIE\n";
}
return 0;
}