#include #include #include using namespace std; void dfs(vector> &G, int v, vector &seen, vector &vlist) { seen[v] = true; for(auto u:G[v]){ if (seen[u]) continue; dfs(G,u,seen,vlist); } vlist.push_back(v); } vector topological_sort(vector> &G) { int V = G.size(); vector seen(V); vector res; for(int v=0; v>N>>M; vector A(N); for(int i=0; i>A[i]; vector> G(N); for(int i=0; i>u>>v; u--; v--; if (A[u]==A[v]) continue; if (A[u] < A[v]) G[u].push_back(v); else G[v].push_back(u); } int K; cin>>K; vector lit(N); for(int i=0; i>B; lit[B-1] = true; } auto v = topological_sort(G); vector ans; for(int i=0; i