Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1.  
  2. Исходный код
  3. #include <iostream>
  4. #include <vector>
  5. #include <fstream>
  6. #include <set>
  7. #include <queue>
  8. #include <algorithm>
  9. #include <map>
  10. #include <string>
  11. #include <cstring>
  12.  
  13. using namespace std;
  14.  
  15. queue <int> q;
  16.  
  17. bool mas[4000][4000];
  18. bool used[4000];
  19.  
  20. map<int, string> f;
  21. map<string, int> of;
  22.  
  23. vector<pair<string, string>> inVertex;
  24.  
  25. vector <string> s;
  26.  
  27. int n, v2, v1, i, j;
  28.  
  29. void bfs(int v1) {
  30. cout << f.find(v1)->second << endl;
  31. q.push(v1);
  32. used[v1] = true;
  33. while(!q.empty())
  34. {
  35. int v = q.front();
  36. q.pop();
  37. for(int i = 1; i < s.size() + 1; ++i)
  38. if(!used[i] && mas[v][i])
  39. {
  40. used[i] = true;
  41. q.push(i);
  42. cout << f.find(i)->second << endl;
  43. }
  44. }
  45. }
  46.  
  47. void dfs(int v1) {
  48. used[v1] = true;
  49. cout << f.find(v1)->second << endl;
  50. for(int i = 1; i <= s.size(); i++)
  51. if(mas[v1][i] && !used[i]) {
  52. dfs(i);
  53. }
  54. }
  55.  
  56.  
  57. int main() {
  58. char graph_type, search_type;
  59. string start;
  60. //ifstream in;
  61. //in.open("C:\\Users\\DNSPC\\Desktop\\input.txt");
  62. cin >> graph_type >> start >> search_type;
  63. string v1, v2;
  64. while (cin>>v1) {
  65. cin >> v2;
  66. inVertex.push_back(make_pair(v1,v2));
  67. if (find(s.begin(), s.end(), v1) == s.end()) s.push_back(v1);
  68. if (find(s.begin(), s.end(), v2) == s.end()) s.push_back(v2);
  69. }
  70.  
  71. sort(s.begin(), s.end());
  72.  
  73. for (i = 1; i <= s.size(); i++) {
  74. f.insert(make_pair(i, s[i - 1]));
  75. of.insert(make_pair(s[i - 1], i));
  76. }
  77. for (i = 0; i < inVertex.size(); i++) {
  78. int ind1, ind2;
  79. ind1 = of.find(inVertex[i].first)->second;
  80. ind2 = of.find(inVertex[i].second)->second;
  81. mas[ind1][ind2] = 1;
  82. if (graph_type == 'u') {
  83. mas[ind2][ind1] = 1;
  84. }
  85. }
  86.  
  87. if (search_type == 'd')
  88. dfs(of.find(start)->second);
  89. else bfs(of.find(start)->second);
  90.  
  91. //in.close();
  92.  
  93. system("pause");
  94.  
  95. return 0;
  96. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement