Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <stack>
  4. #include <vector>
  5. #define nmax 100005
  6. using namespace std;
  7. ifstream fin("ciclueuler.in");
  8. ofstream fout("ciclueuler.out");
  9. vector < pair< int , int > > G[nmax];
  10. stack < int > S;
  11. int n,m,visited[nmax*5],k,sol[nmax*5],x,y,nodStiva;
  12. void dfs(int nod)
  13. {
  14. int nodStiva, vecin, indMuchie;
  15. S.push(nod);
  16. while(!S.empty()) {
  17. nodStiva=S.top();
  18. if( !G[nodStiva].empty()){
  19. vecin=G[nodStiva].back().first;
  20. indMuchie = G[nodStiva].back().second;
  21. G[nodStiva].pop_back();
  22. if(!visited[indMuchie]) {
  23. visited[indMuchie] = true;
  24. S.push(vecin);
  25. }
  26. }
  27. else{
  28. k++;
  29. sol[k]=nodStiva;
  30. S.pop();
  31. // if(S.empty() == false) fout<<nodStiva<<" ";
  32. }
  33. }
  34. }
  35. int main()
  36. {
  37. fin>>n>>m;
  38. for(int i =1 ; i <=m ;i++)
  39. {
  40. fin>>x>>y;
  41. G[x].push_back(make_pair(y,i));
  42. G[y].push_back(make_pair(x,i));
  43.  
  44. }
  45. //verific grad
  46. for(int i = 1; i <= n ;i++)
  47. {
  48. if(G[i].size()%2==1)
  49. {
  50. fout<<-1;
  51. return 0;
  52. }
  53. }
  54. dfs(1);
  55. for(int i = 1; i < k ; i++)
  56. fout<<sol[i]<<" ";
  57. fout<<'\n';
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement