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