Advertisement
GerexD

Euler, Hamilton, Fokszam, Feltolt

Oct 16th, 2018
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.53 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. /**
  4. 1. Adott a graf.be szövegállomány, amelynek elsô sorában a gráf cso-
  5. mópontjainak száma(n) található, a második sorában az élek száma(m), a har-
  6. madik sortól kezdve pedig m soron keresztül, az éleket leíró csomópontpárok
  7. szóközzel elválasztva.
  8. a) Döntsük el a gráfról, hogy Euler gráf-e. Használjuk az erre vonatkozó té-
  9. telt.
  10. b) Vizsgáljuk meg, hogy a tanult tétel alapján a gráfról eldönthetjük-e, hogy
  11. Hamilton gráf.
  12. c) a csucsok.be állomßny minden sorában egy csomópontokból álló sorozat
  13. található szóközzel elválasztva. Minden ilyen csúcssorozat esetén mondjuk
  14. meg, hogy séta-e, út-e, vonal-e? Az utak esetén vizsgáljuk azt is, hogy
  15. kör-e?*/
  16. using namespace std;
  17. void feltolt(int a[][30],int &n,int &m)
  18. {
  19. ifstream f("graf.be.txt");
  20. f>>n>>m;
  21. int x,y;
  22. for(int i=1; i<=m; i++)
  23. {
  24. f>>x>>y;
  25. a[x][y]=1;
  26. a[y][x]=1;
  27. }
  28. f.close();
  29.  
  30. }
  31. int fokszam(int a[][30],int n,int k)
  32. {
  33. int db=0;
  34. for(int j=1;j<=n;j++)
  35. if(a[k][j]==1) db++;
  36. return db;
  37. }
  38. int euler(int a[][30],int n)
  39. {
  40.  
  41. for(int i=1;i<=n;i++)
  42. if(fokszam(a,n,i)%2==1) return 0;
  43.  
  44. return 1;
  45.  
  46. }
  47. int main()
  48. {
  49. int a[30][30],n,m;
  50. feltolt(a,n,m);
  51. cout<<"euler "<<euler(a,n)<<endl;
  52. int h=1;
  53. for(int i=1;i<=n;i++)
  54. if(fokszam(a,n,i)<n/2) h=0;
  55.  
  56. if(h==1) cout<<"hamilton 1";
  57. else cout<<"hamilton nem tudom eldonteni";
  58. return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement