#include #include using namespace std; #define MAX_N 100000 int N, M; vector grafo[MAX_N]; bool mess[MAX_N]; int turing[MAX_N]; int navi[MAX_N]; bool dfs(int x, int y){ if(y==N) return false; if(x==N) return true; for(vector::iterator i=grafo[x].begin();i!=grafo[x].end();i++){ if(!mess[*i]){ mess[*i]=true; navi[x]=*i; if(turing[x]==*i) y++; if(dfs(x+1, y)) return true; else{ mess[*i]=false; navi[x]=-1; } } if(i==grafo[x].end()) return false; } } int main(int argc, char **argv){ ifstream in("input.txt"); in >> N >> M; for(int i=0;i> m >> s; grafo[m].push_back(s); turing[m] = s; } for(int i=0;i> m >> s; grafo[m].push_back(s); } in.close(); ofstream out("output.txt"); if(dfs(0,0)){ for(int i=0;i