CCCPaste

Untitled

#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<