#include using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N, M, K; cin >> N >> M >> K; vector> g(N), gr(N); vector> edges; for(int i=0;i> u >> v; --u; --v; g[u].push_back(v); gr[v].push_back(u); edges.emplace_back(u,v); } vector vis(N,false); stack st; st.push(0); vis[0]=true; while(!st.empty()){ int u=st.top(); st.pop(); for(int v: g[u]) if(!vis[v]){ vis[v]=true; st.push(v); } } for(int i=0;i ok(N,false); vector X; function dfs1 = [&](int u){ ok[u]=true; for(int v: g[u]) if(!ok[v]) dfs1(v); X.push_back(u); }; for(int i=0;i comp(N,-1); int val=0; function dfs2 = [&](int u){ comp[u]=val; for(int v: gr[u]) if(comp[v]==-1) dfs2(v); }; for(int i=N-1;i>=0;i--){ int v = X[i]; if(comp[v]==-1){ dfs2(v); val++; } } vector sz(val,0); vector loop(val,false); for(int i=0;i