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

/*
??°??????????????£???????????????????????°???????????????????????????????????????????¢?????????????????????????.
*/
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;

#define MAX_V 10001

int V, E;              //??????????????°??¨?????°
vector<int> G[MAX_V];  // ??°???????????£??\\???????????¨???
vector<int> rG[MAX_V]; // ????????????????????????????????°??????
vector<int> vs;        // ??°?????????????????°??????
int used[MAX_V];       // ?????¨??????????????????
int cmp[MAX_V];        // ?±????????????£????????????????????????????????????

void add_edge(int from, int to) {
  // ??°?????????????????£??\\????????????
  // ????????????DAG?????????
  G[from].push_back(to);
  rG[to].push_back(from);
}

void dfs(int v) {
  // ??°?????????????????§??±???????????¢?´¢?????????????????????
  used[v] = 1;
  for (int i = 0; i < G[v].size(); i++) {
    if (!used[G[v][i]])
      dfs(G[v][i]);
  }
  vs.push_back(v);
}

void rdfs(int v, int k) {
  // ??????????????±???????????¢?´¢???????????????
  used[v] = 1;
  cmp[v] = k; // ????????????????±??????´????????????k??¨??????
  for (int i = 0; i < rG[v].size(); i++) {
    if (!used[rG[v][i]])
      rdfs(rG[v][i], k);
  }

  // ??\\?¶??????????????????????????????????????????£??????????????§??????????????¢??????
}

int scc() {
  memset(used, 0, sizeof(used));
  vs.clear();
  for (int i = 0; i < V; i++) {
    if (!used[i])
      dfs(i);
  }
  memset(used, 0, sizeof(used));
  int k = 0;
  for (int i = vs.size() - 1; i >= 0; i--) {
    if (!used[vs[i]])
      rdfs(vs[i], k++);
  }
  return k; //?????£???????????°?????????
}

int main() {
  cin >> V >> E;
  int from, to;
  for (int i = 0; i < E; i++) {
    cin >> from >> to;
    add_edge(from, to);
  }
  int how_many_graph;
  how_many_graph = scc();

  int q;
  cin >> q;
  for (int i = 0; i < q; i++) {
    cin >> from >> to;
    if (cmp[from] == cmp[to])
      cout << "1" << endl;
    else
      cout << "0" << endl;
  }
  return 0;
}

Error: 0

Fixed submission:

/*
??°??????????????£???????????????????????°???????????????????????????????????????????¢?????????????????????????.
*/
#include <cstring>
#include <iostream>
#include <vector>
using namespace std;

#define MAX_V 100

int V, E;              //??????????????°??¨?????°
vector<int> G[MAX_V];  // ??°???????????£??\\???????????¨???
vector<int> rG[MAX_V]; // ????????????????????????????????°??????
vector<int> vs;        // ??°?????????????????°??????
int used[MAX_V];       // ?????¨??????????????????
int cmp[MAX_V];        // ?±????????????£????????????????????????????????????

void add_edge(int from, int to) {
  // ??°?????????????????£??\\????????????
  // ????????????DAG?????????
  G[from].push_back(to);
  rG[to].push_back(from);
}

void dfs(int v) {
  // ??°?????????????????§??±???????????¢?´¢?????????????????????
  used[v] = 1;
  for (int i = 0; i < G[v].size(); i++) {
    if (!used[G[v][i]])
      dfs(G[v][i]);
  }
  vs.push_back(v);
}

void rdfs(int v, int k) {
  // ??????????????±???????????¢?´¢???????????????
  used[v] = 1;
  cmp[v] = k; // ????????????????±??????´????????????k??¨??????
  for (int i = 0; i < rG[v].size(); i++) {
    if (!used[rG[v][i]])
      rdfs(rG[v][i], k);
  }

  // ??\\?¶??????????????????????????????????????????£??????????????§??????????????¢??????
}

int scc() {
  memset(used, 0, sizeof(used));
  vs.clear();
  for (int i = 0; i < V; i++) {
    if (!used[i])
      dfs(i);
  }
  memset(used, 0, sizeof(used));
  int k = 0;
  for (int i = vs.size() - 1; i >= 0; i--) {
    if (!used[vs[i]])
      rdfs(vs[i], k++); // ??????????????????????????????
  }
  return k; //?????£???????????°?????????
}

int main() {
  cin >> V >> E;
  int from, to;
  for (int i = 0; i < E; i++) {
    cin >> from >> to;
    add_edge(from, to);
  }
  int how_many_graph;
  how_many_graph = scc();

  int q;
  cin >> q;
  for (int i = 0; i < q; i++) {
    cin >> from >> to;
    if (cmp[from] == cmp[to])
      cout << "1" << endl;
    else
      cout << "0" << endl;
  }
  return 0;
}