#include #include #include #include #include using namespace std; int n, m; vectorgraph[100005]; vectorrev_graph[100005]; vector v; bool visited[100005]; stacks; void dfs(int node){ visited[node]=true; for(int i=0; i>n>>m; for(int i=0; i>a>>b; graph[a].push_back(b); rev_graph[b].push_back(a); } memset(visited, false, sizeof visited); memset(special, false, sizeof special); for(int i=1; i<=n; i++){ if(!visited[i]){ dfs(i); } } memset(visited, false, sizeof visited); while(!s.empty()){ int node=s.top(); if(!visited[node]){ v.clear(); rev_dfs(node); // cout << v.size() << endl; if(v.size() > 1) { for(int p = 0; p < v.size(); p++) { special[v[p]] = true; } } } s.pop(); } for(int i=1; i<=n; i++){ // cout<