Обход графа в глубину c++ ======================================

Задача: http://informatics.mccme.ru/mod/statements/view.php?id=8454#1

#include <bits/stdc++.h>
using namespace std;
int n;
const int MAXN = 110;
int g[MAXN][MAXN];
bool used[MAXN];
vector<int> comp; // êîìï ñâÿçíîñòè
void dfs(int v)
{
    used[v] = true;
    comp.push_back(v);
    for(size_t i = 0; i < n; i++)
    {
        int to = g[v][i];
        if(!used[to] && to)
            dfs(to);
    }
}
int main()
{
//  freopen("input.txt", "r", stdin);  
    int s;
    cin >> n >> s;
    s--;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            cin >> g[i][j];
    dfs(s);
    cout << comp.size() + 1; // +1 äëÿ ñàìîé âåðøèíû s
    return 0;
}

Проходит только 3/8 теста. В чем ошибка?

====================================== c++ https://ru.stackoverflow.com/q/614417