#include #include #include int main() { int n, m; std::cin >> n >> m; std::vector parent(n); parent[0] = -1; for(int i=0; i> a >> b; parent[b-1] = a-1; } std::vector > children(n); for(int i=1; i dfs; int idx=0; dfs.push_front(0); std::vector visited(n); std::vector firstindex(n); std::vector lastindex(n); while(!dfs.empty()) { int next = dfs.front(); dfs.pop_front(); if(visited[next]) lastindex[next] = idx++; else { firstindex[next] = idx++; visited[next] = true; dfs.push_front(next); int nc = children[next].size(); for(int i=0; i> d; if(lastindex[d-1] < curmin) { std::cout << i << std::endl; return 0; } curmin = std::max(curmin, firstindex[d-1]); } std::cout << m << std::endl; }