#include #include #include using namespace std; const int MAX_VERTEX = 100000, MAX_EDGE = 1000000; int vertex; int edge; int start; int stop; int C[MAX_EDGE][2]; struct product { int pos; int flip; } resu; product searchedge(int arg[MAX_EDGE][2], int edge, int value){ int valueLeft; int valueRight; product val; for (int i = 0; i < edge; i++){ valueLeft=arg[i][0]; valueRight=arg[i][1]; if (valueLeft == value){ val.pos = i; val.flip = 0; return val; }else if(valueRight == value){ val.pos = i; val.flip = 1; return val; } } } int main() { ifstream fin("input.txt"); assert( fin ); fin >> vertex >> edge >> start >> stop; for(int i = 0; i < edge; i++){ fin >> C[i][0]; fin >> C[i][1]; } fin.close(); int counter = edge; product position; ofstream fout("output.txt"); assert( fout ); while (counter != 0){ position = searchedge(C,edge,start); if (position.flip == 0){ fout << C[position.pos][0]<< " " << C[position.pos][1] << endl; start = C[position.pos][1]; }else{ fout << C[position.pos][1]<< " " << C[position.pos][0] << endl; start = C[position.pos][0]; } C[position.pos][0]=-1; C[position.pos][1]=-1; counter--; } fout.close(); return 0; }