Advertisement
Guest User

Untitled

a guest
Nov 21st, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.45 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstdio>
  3. #include<deque>
  4. #include<map>
  5. #include<algorithm>
  6.  
  7. using namespace std;
  8.  
  9. struct Wieszcholek
  10. {
  11. public:
  12. string nazwa_soku;
  13. int kwasniejsze;
  14. deque<int> slotsze;
  15. };
  16.  
  17. int main()
  18. {
  19. std::cin.tie(NULL);
  20. ios_base::sync_with_stdio(false);
  21. int li_wierzcholkow;
  22. int li_krawedzi;
  23. string buf1;
  24. string buf2;
  25. int indeks1;
  26. int indeks2;
  27.  
  28. cin>>li_wierzcholkow;
  29. cin>>li_krawedzi;
  30.  
  31. deque<Wieszcholek> wieszcholki;
  32. map<string,int> mapa;
  33.  
  34. for(int i=0; i<li_wierzcholkow; ++i) //tworzenie wierzcholkow
  35. {
  36. cin>>buf1;
  37.  
  38. Wieszcholek wieszcholek;
  39. wieszcholek.nazwa_soku=buf1;
  40. wieszcholek.kwasniejsze=0;
  41. wieszcholki.push_back(wieszcholek);
  42.  
  43. mapa[buf1]=i;
  44. }
  45.  
  46. for(int j=0; j<li_krawedzi; ++j) //tworzenie polaczen
  47. {
  48. cin>>buf1;
  49. cin>>buf2;
  50.  
  51. wieszcholki[mapa[buf1]].slotsze.push_back(mapa[buf2]);
  52. ++wieszcholki[mapa[buf2]].kwasniejsze;
  53. }
  54.  
  55. //wyszukiwanie, wypisywanie i usowanie naj bardziej kwasnych sokow
  56.  
  57. deque<int> buf_wskazniki;
  58.  
  59. for(int k=0; k<li_wierzcholkow; ++k)//twozrenie listy sokow do usuniecia
  60. {
  61. if(wieszcholki[k].kwasniejsze==0)
  62. {
  63. buf_wskazniki.push_back(k);
  64. }
  65. }
  66.  
  67. while(buf_wskazniki.empty()!=true) //dopuki kolejka do uswania nie jest pusta
  68. {
  69. int wieszcholek_do_usuniecia=buf_wskazniki.front();
  70.  
  71. while(wieszcholki[wieszcholek_do_usuniecia].slotsze.empty()!=true) //dopuki lista slotszych elementow nie jest pusta
  72. {
  73. int wieszcholek_do_zmniejszenia=wieszcholki[wieszcholek_do_usuniecia].slotsze.front();
  74. --wieszcholki[wieszcholek_do_zmniejszenia].kwasniejsze; //zmniejszanie iloœci kwasniejszych sokow
  75. if(wieszcholki[wieszcholek_do_zmniejszenia].kwasniejsze==0)
  76. {
  77. buf_wskazniki.push_back(wieszcholek_do_zmniejszenia);
  78. }
  79. wieszcholki[wieszcholek_do_usuniecia].slotsze.pop_front();
  80. }
  81. cout<<wieszcholki[wieszcholek_do_usuniecia].nazwa_soku<<endl;
  82.  
  83. wieszcholki[wieszcholek_do_usuniecia].kwasniejsze=-1; //wierzcholek do usuniecia ustaw na -1
  84. buf_wskazniki.pop_front();
  85.  
  86. sort(buf_wskazniki.begin(), buf_wskazniki.end());
  87. }
  88.  
  89. for(int l=0 ;l<li_wierzcholkow; ++l)
  90. {
  91. wieszcholki.pop_front();
  92. }
  93.  
  94. return 0;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement