Problem p00431 (C++) — buggy submission, verdict: Runtime Error

#include <algorithm>
#include <cstdio>
#include <vector>

using namespace std;

vector<int> G[100];
bool visit[100];

vector<int> out;

int dfs(int i) {
  int res = 0;
  for (int v = 0; v < G[i].size(); v++) {
    if (!visit[G[i][v]]) {
      visit[G[i][v]] = true;
      res = max(res, dfs(G[i][v]));
      visit[G[i][v]] = false;
    }
  }
  return res + 1;
}

int main() {
  int n;
  int a, b;
  do {
    scanf("%d", &n);
    if (n) {
      for (int i = 0; i < 100; i++) {
        G[i].clear();
      }
      for (int i = 0; i < n; i++) {
        scanf("%d %d", &a, &b);
        a--;
        b--;
        G[a].push_back(b);
        G[b].push_back(a);
      }
      int res = 0;
      for (int i = 0; i < 100; i++) {
        visit[i] = true;
        res = max(res, dfs(i));
        visit[i] = false;
      }
      out.push_back(res);
    }
  } while (n);
  for (vector<int>::iterator ite = out.begin(); ite != out.end(); ite++) {
    printf("%d\\n", *ite);
  }
  return 0;
}

Error: 0
debug:0
debug:2
debug:0
debug:3
debug:6
debug:1
debug:4
debug:5
debug:3
debug:0
debug:6
debug:1
debug:4
debug:5
debug:3
debug:2
debug:0
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:6
debug:1
debug:4
debug:5
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:1
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:2
debug:0
debug:2
debug:3
debug:3
debug:2
debug:6
debug:1
debug:4
debug:5
debug:3
debug:2
debug:0
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:6
debug:1
debug:4
debug:5
debug:3
debug:2
debug:0
debug:3
debug:6
debug:1
debug:4
debug:5
debug:3
debug:0
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:6
debug:1
debug:4
debug:5
debug:4
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:5
debug:6
debug:1
debug:4
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:6
debug:1
debug:6
debug:4
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:4
debug:6
debug:1
debug:5
debug:0
debug:2
debug:3
debug:3
debug:2
debug:5
debug:6
debug:1
debug:4
debug:0
debug:2
debug:3
debug:3
debug:2
debug:0
debug:2
debug:3
debug:3
debug:2
debug:6
debug:1
debug:4
debug:5
debug:7
debug:8
debug:9
debug:10
debug:11
debug:12
debug:13
debug:14
debug:15
debug:16
debug:17
debug:18
debug:19
debug:20
debug:21
debug:22
debug:23
debug:24
debug:25
debug:26
debug:27
debug:28
debug:29
debug:30
debug:31
debug:32
debug:33
debug:34
debug:35
debug:36
debug:37
debug:38
debug:39
debug:40
debug:41
debug:42
debug:43
debug:44
debug:45
debug:46
debug:47
debug:48
debug:49
debug:50
debug:51
debug:52
debug:53
debug:54
debug:55
debug:56
debug:57
debug:58
debug:59
debug:60
debug:61
debug:62
debug:63
debug:64
debug:65
debug:66
debug:67
debug:68
debug:69
debug:70
debug:71
debug:72
debug:73
debug:74
debug:75
debug:76
debug:77
debug:78
debug:79
debug:80
debug:81
debug:82
debug:83
debug:84
debug:85
debug:86
debug:87
debug:88
debug:89
debug:90
debug:91
debug:92
debug:93
debug:94
debug:95
debug:96
debug:97
debug:98
debug:99
debug:0
debug:1
debug:0
debug:4
debug:3
debug:2
debug:2
debug:3
debug:4
debug:0
debug:5
debug:4
debug:3
debug:2
debug:1
debug:0
debug:5
debug:0
debug:1
debug:2
debug:3
debug:5
debug:1
debug:0
debug:1
debug:2
debug:3
debug:4
debug:5
debug:4
debug:3
debug:2
debug:1
debug:5
debug:2
debug:1
debug:0
debug:4
debug:3
debug:5
debug:3
debug:4
debug:0
debug:1
debug:5
debug:5
debug:1
debug:0
debug:4
debug:3
debug:2
debug:2
debug:3
debug:4
debug:0
debug:2
debug:1
debug:0
debug:4
debug:3
debug:2
debug:2
debug:3
debug:4
debug:0
debug:5
debug:3
debug:2
debug:1
debug:0
debug:4
debug:5
debug:4
debug:0
debug:1
debug:2
debug:5
debug:3
debug:2
debug:1
debug:0
debug:4
debug:3
debug:5
debug:3
debug:4
debug:0
debug:1
debug:5
debug:4
debug:3
debug:2
debug:1
debug:0
debug:5
debug:0
debug:1
debug:2
debug:3
debug:5
debug:4
debug:3
debug:2
debug:1
debug:0
debug:4
debug:5
debug:4
debug:0
debug:1
debug:2
debug:5
debug:0
debug:1
debug:2
debug:3
debug:4
debug:5
debug:4
debug:3
debug:2
debug:1
debug:5
debug:5
debug:1
debug:0
debug:4
debug:3
debug:2
debug:2
debug:3
debug:4
debug:0
debug:5
debug:6
debug:7
debug:8
debug:9
debug:10
debug:11
debug:12
debug:13
debug:14
debug:15
debug:16
debug:17
debug:18
debug:19
debug:20
debug:21
debug:22
debug:23
debug:24
debug:25
debug:26
debug:27
debug:28
debug:29
debug:30
debug:31
debug:32
debug:33
debug:34
debug:35
debug:36
debug:37
debug:38
debug:39
debug:40
debug:41
debug:42
debug:43
debug:44
debug:45
debug:46
debug:47
debug:48
debug:49
debug:50
debug:51
debug:52
debug:53
debug:54
debug:55
debug:56
debug:57
debug:58
debug:59
debug:60
debug:61
debug:62
debug:63
debug:64
debug:65
debug:66
debug:67
debug:68
debug:69
debug:70
debug:71
debug:72
debug:73
debug:74
debug:75
debug:76
debug:77
debug:78
debug:79
debug:80
debug:81
debug:82
debug:83
debug:84
debug:85
debug:86
debug:87
debug:88
debug:89
debug:90
debug:91
debug:92
debug:93
debug:94
debug:95
debug:96
debug:97
debug:98
debug:99
debug:0
debug:2
debug:0
debug:4
debug:1
debug:3
debug:1
debug:5
debug:6
debug:5
debug:6
debug:1
debug:6
debug:5
debug:1
debug:5
debug:3
debug:1
debug:6
debug:6
debug:3
debug:1
debug:1
debug:3
debug:6
debug:2
debug:0
debug:2
debug:4
debug:4
debug:2
debug:0
debug:3
debug:1
debug:3
debug:5
debug:6
debug:6
debug:5
debug:5
debug:3
debug:6
debug:6
debug:3
debug:5
debug:3
debug:1
debug:6
debug:6
debug:3
debug:1
debug:1
debug:3
debug:6
debug:6
debug:5
debug:3
debug:1
debug:1
debug:3
debug:3
debug:1
debug:5
debug:5
debug:1
debug:4
debug:2
debug:0
debug:4
debug:5
debug:3
debug:1
debug:5
debug:6
debug:5
debug:6
debug:1
debug:6
debug:5
debug:1
debug:6
debug:5
debug:3
debug:1
debug:1
debug:3
debug:3
debug:1
debug:5
debug:5
debug:1
debug:1
debug:3
debug:5
debug:6
debug:6
debug:5
debug:5
debug:3
debug:6
debug:6
debug:3
debug:6
debug:5
debug:3
debug:1
debug:6
debug:6
debug:3
debug:1
debug:1
debug:3
debug:6
debug:3
debug:1
debug:5
debug:6
debug:5
debug:6
debug:1
debug:6
debug:5
debug:1
debug:7
debug:8
debug:9
debug:10
debug:11
debug:12
debug:13
debug:14
debug:15
debug:16
debug:17
debug:18
debug:19
debug:20
debug:21
debug:22
debug:23
debug:24
debug:25
debug:26
debug:27
debug:28
debug:29
debug:30
debug:31
debug:32
debug:33
debug:34
debug:35
debug:36
debug:37
debug:38
debug:39
debug:40
debug:41
debug:42
debug:43
debug:44
debug:45
debug:46
debug:47
debug:48
debug:49
debug:50
debug:51
debug:52
debug:53
debug:54
debug:55
debug:56
debug:57
debug:58
debug:59
debug:60
debug:61
debug:62
debug:63
debug:64
debug:65
debug:66
debug:67
debug:68
debug:69
debug:70
debug:71
debug:72
debug:73
debug:74
debug:75
debug:76
debug:77
debug:78
debug:79
debug:80
debug:81
debug:82
debug:83
debug:84
debug:85
debug:86
debug:87
debug:88
debug:89
debug:90
debug:91
debug:92
debug:93
debug:94
debug:95
debug:96
debug:97
debug:98
debug:99


Fixed submission:

#include <algorithm>
#include <cstdio>
#include <vector>

using namespace std;

vector<int> G[100];
bool visit[100];

int dfs(int i) {
  int res = 0;
  fprintf(stderr, "debug:%d\\n", i);
  for (int v = 0; v < G[i].size(); v++) {
    if (!visit[G[i][v]]) {
      visit[G[i][v]] = true;
      res = max(res, dfs(G[i][v]));
      visit[G[i][v]] = false;
    }
  }
  return res + 1;
}

int main() {
  int n;
  int a, b;
  do {
    scanf("%d", &n);
    if (n) {
      for (int i = 0; i < 100; i++) {
        G[i].clear();
      }
      for (int i = 0; i < n; i++) {
        scanf("%d %d", &a, &b);
        a--;
        b--;
        G[a].push_back(b);
        G[b].push_back(a);
      }
      int res = 0;
      for (int i = 0; i < 100; i++) {
        res = max(res, dfs(i));
      }
      printf("%d\\n", res - 1);
    }
  } while (n);
  return 0;
}