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

// Jay Shree Krishna

#include "bits/stdc++.h"
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
#define ll long long int
#define inf 1e18 + 5
#define sr string
#define M 1000000007
#define start                                                                  \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define db(x) cout << #x << "=" << x << "\\n"
#define db2(a, b) cout << #a << ": " << a << " , " << #b << ": " << b << endl;
#define db3(a, b, c)                                                           \\
  cout << #a << ": " << a << " , " << #b << ": " << b << " , " << #c << ": "   \\
       << c << endl;
#define forr(i, n) for (int i = 0; i < n; i++)
#define fr(i, n) for (int i = 1; i <= n; i++)
#define rep(i, j, k) for (int i = j; i < k; i++)
#define rp(i, j, k) for (int i = j; i <= k; i++)
#define nn "\\n"
#define en "\\n"
#define vvi vector<vector<int>>
#define vi vector<int>
#define si set<int>
#define mlsi multiset<int>
#define vc vector<char>
#define vli vector<long long int>
#define vpii vector<pair<ll, ll>>
#define pii pair<ll, ll>
#define mii map<ll, ll>
#define msi map<string, int>
#define mci map<char, int>
#define umii unordered_map<int, int>
#define umsi unordered_map<string, int>
#define umci unordered_map<char, int>
#define mkp make_pair
#define pb push_back
#define eb emplace_back
#define all(x) x.begin(), x.end()
#define sortv(x) sort(x.begin(), x.end())
#define sorta(x, n) sort(x, x + n)
#define sorted(x) is_sorted(x.begin(), x.end())
#define print_all(x)                                                           \\
  for (auto t : x)                                                             \\
    cout << t << " ";                                                          \\
  cout << en;
#define mxe(x) *max_element(all(x))
#define mne(x) *min_element(all(x))
#define ub upper_bound
#define lb lower_bound
#define go(x) for (auto &[u, v] : x)
#define in(x) cin >> x
#define in2(x, y) cin >> x >> y
#define in3(x, y, z) cin >> x >> y >> z
#define in4(x, y, z, v) cin >> x >> y >> z >> v
#define oo(x) cout << x << en
#define oo2(x, y) cout << x << " " << y << en
#define oo3(x, y, z) cout << x << " " << y << " " << z << en
#define ood(n, x) cout << fixed << setprecision(n) << x << "\\n"
#define sz(x) x.size()
#define ff first
#define ss second
#define ooy cout << "Yes\\n"
#define oon cout << "No\\n"
#define ooyy cout << "YES\\n"
#define oonn cout << "NO\\n"
#define rr return
#define cc continue

using namespace std;

template <class T> bool ckmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; }
template <class T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }

void read(vli &a, int n) {
  a.resize(n);
  forr(i, n) cin >> a[i];
}

bool fine = 0;
vli a, b;
ll n, m;
ll ans = 0;

const int N = 1e5 + 5;
vi ad[N];
vector<vector<int>> res;
vector<int> temp;
stack<int> st;

void dfs(vi adj[], vi &vis, int s) {
  vis[s] = 1;
  bool ok = true;
  for (auto x : adj[s]) {
    if (vis[x] == 0) {
      ok = false;
      dfs(adj, vis, x);
    }
  }
  st.push(s);
}

void dfs1(vi rev[], vi &vis, int s) {
  vis[s] = 1;
  temp.pb(s);
  for (auto x : rev[s]) {
    if (vis[x] == 0) {
      dfs1(rev, vis, x);
    }
  }
}
int kosaraju(int nd, vector<int> adj[]) {
  res.clear();
  temp.clear();
  vi vis(nd);
  vector<int> rev[N];
  for (int i = 0; i < nd; i++) {
    if (vis[i] == 0) {
      dfs(adj, vis, i);
    }
  }
  vis.clear();
  vis.resize(nd);
  fill(vis.begin(), vis.end(), 0);

  for (int i = 0; i < nd; i++) {
    for (auto x : adj[i]) {
      rev[x].pb(i);
    }
  }
  while (!st.empty()) {
    int i = st.top();
    st.pop();
    if (!vis[i]) {
      dfs1(rev, vis, i);
      res.pb(temp);
      temp.clear();
    }
  }
  return res.size();
}

void solve() {
  in2(n, m);
  int u, v;
  int id;
  forr(i, m) {
    in2(u, v);
    u--;
    v--;
    ad[u].pb(v);
    ad[v].pb(u);
  }
  oo(kosaraju(n, ad) - 1);
}

int main() {
#ifndef ONLINE_JUDGE
  freopen("input1.txt", "r", stdin);
  freopen("error.txt", "w", stderr);
  freopen("output1.txt", "w", stdout);
#endif
  fast;
  if (fine) {
    start { solve(); }
  } else
    solve();
  return 0;
}


Error: WA

Fixed submission:

// Jay Shree Krishna

#include "bits/stdc++.h"
#define fast                                                                   \\
  ios_base::sync_with_stdio(false);                                            \\
  cin.tie(NULL);                                                               \\
  cout.tie(NULL)
#define ll long long int
#define inf 1e18 + 5
#define sr string
#define M 1000000007
#define start                                                                  \\
  int t;                                                                       \\
  cin >> t;                                                                    \\
  while (t--)
#define db(x) cout << #x << "=" << x << "\\n"
#define db2(a, b) cout << #a << ": " << a << " , " << #b << ": " << b << endl;
#define db3(a, b, c)                                                           \\
  cout << #a << ": " << a << " , " << #b << ": " << b << " , " << #c << ": "   \\
       << c << endl;
#define forr(i, n) for (int i = 0; i < n; i++)
#define fr(i, n) for (int i = 1; i <= n; i++)
#define rep(i, j, k) for (int i = j; i < k; i++)
#define rp(i, j, k) for (int i = j; i <= k; i++)
#define nn "\\n"
#define en "\\n"
#define vvi vector<vector<int>>
#define vi vector<int>
#define si set<int>
#define mlsi multiset<int>
#define vc vector<char>
#define vli vector<long long int>
#define vpii vector<pair<ll, ll>>
#define pii pair<ll, ll>
#define mii map<ll, ll>
#define msi map<string, int>
#define mci map<char, int>
#define umii unordered_map<int, int>
#define umsi unordered_map<string, int>
#define umci unordered_map<char, int>
#define mkp make_pair
#define pb push_back
#define eb emplace_back
#define all(x) x.begin(), x.end()
#define sortv(x) sort(x.begin(), x.end())
#define sorta(x, n) sort(x, x + n)
#define sorted(x) is_sorted(x.begin(), x.end())
#define print_all(x)                                                           \\
  for (auto t : x)                                                             \\
    cout << t << " ";                                                          \\
  cout << en;
#define mxe(x) *max_element(all(x))
#define mne(x) *min_element(all(x))
#define ub upper_bound
#define lb lower_bound
#define go(x) for (auto &[u, v] : x)
#define in(x) cin >> x
#define in2(x, y) cin >> x >> y
#define in3(x, y, z) cin >> x >> y >> z
#define in4(x, y, z, v) cin >> x >> y >> z >> v
#define oo(x) cout << x << en
#define oo2(x, y) cout << x << " " << y << en
#define oo3(x, y, z) cout << x << " " << y << " " << z << en
#define ood(n, x) cout << fixed << setprecision(n) << x << "\\n"
#define sz(x) x.size()
#define ff first
#define ss second
#define ooy cout << "Yes\\n"
#define oon cout << "No\\n"
#define ooyy cout << "YES\\n"
#define oonn cout << "NO\\n"
#define rr return
#define cc continue

using namespace std;

template <class T> bool ckmin(T &a, const T &b) { return a > b ? a = b, 1 : 0; }
template <class T> bool ckmax(T &a, const T &b) { return a < b ? a = b, 1 : 0; }

void read(vli &a, int n) {
  a.resize(n);
  forr(i, n) cin >> a[i];
}

bool fine = 0;
vli a, b;
ll n, m;
ll ans = 0;

const int N = 1e5 + 5;
vi ad[N];
vector<vector<int>> res;
vector<int> temp;
stack<int> st;

void dfs(vi adj[], vi &vis, int s) {
  vis[s] = 1;
  bool ok = true;
  for (auto x : adj[s]) {
    if (vis[x] == 0) {
      ok = false;
      dfs(adj, vis, x);
    }
  }
  st.push(s);
}

void dfs1(vi rev[], vi &vis, int s) {
  vis[s] = 1;
  temp.pb(s);
  for (auto x : rev[s]) {
    if (vis[x] == 0) {
      dfs1(rev, vis, x);
    }
  }
}
int kosaraju(int nd, vector<int> adj[]) {
  res.clear();
  temp.clear();
  vi vis(nd);
  vector<int> rev[6000];
  for (int i = 0; i < nd; i++) {
    if (vis[i] == 0) {
      dfs(adj, vis, i);
    }
  }
  vis.clear();
  vis.resize(nd);
  fill(vis.begin(), vis.end(), 0);

  for (int i = 0; i < nd; i++) {
    for (auto x : adj[i]) {
      rev[x].pb(i);
    }
  }
  while (!st.empty()) {
    int i = st.top();
    st.pop();
    if (!vis[i]) {
      dfs1(rev, vis, i);
      res.pb(temp);
      temp.clear();
    }
  }
  return res.size();
}

void solve() {
  in2(n, m);
  int u, v;
  int id;
  forr(i, m) {
    in2(u, v);
    u--;
    id = u;
    v--;
    ad[u].pb(v);
    ad[v].pb(u);
  }
  oo(kosaraju(n, ad) - 1);
}

int main() {
#ifndef ONLINE_JUDGE
  freopen("input1.txt", "r", stdin);
  freopen("error.txt", "w", stderr);
  freopen("output1.txt", "w", stdout);
#endif
  fast;
  if (fine) {
    start { solve(); }
  } else
    solve();
  return 0;
}