Stavo risolvendo questo problema ma mi va in TLE in alcuni casi del Subtask 5, questo e’ il codice:
#include <bits/stdc++.h>
#define ve vector
#define pb push_back
using namespace std;
int n, m;
int ans;
void visita(int node, ve<ve<int>> &adj, ve<bool> &s_uno, ve<bool> &visto) {
if(visto[node]) return;
visto[node] = 1;
++ans;
for(auto child : adj[node]) {
if(s_uno[node]) {
visita(child, adj, s_uno, visto);
}
for(auto child2 : adj[child]) {
visita(child2, adj, s_uno, visto);
}
}
}
int main() {
ifstream cin("input.txt");
ofstream cout("output.txt");
cin >> n >> m;
ve<ve<int>> adj(n);
ve<bool> s_uno(n, 0), visto(n, 0);
for(int i = 0; i < m; ++i) {
int a, b;
cin >> a >> b;
if(a == b) s_uno[a] = true;
adj[a].pb(b);
}
visita(0, adj, s_uno, visto);
cout << ans;
return 0;
}