D_L3

SDA EXAM

Jan 26th, 2024
718
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.35 KB | None | 0 0
  1. #include <map>
  2. #include <set>
  3. #include <list>
  4. #include <cmath>
  5. #include <ctime>
  6. #include <deque>
  7. #include <queue>
  8. #include <stack>
  9. #include <string>
  10. #include <bitset>
  11. #include <cstdio>
  12. #include <limits>
  13. #include <vector>
  14. #include <climits>
  15. #include <cstring>
  16. #include <cstdlib>
  17. #include <fstream>
  18. #include <numeric>
  19. #include <sstream>
  20. #include <iostream>
  21. #include <algorithm>
  22. #include <unordered_map>
  23.  
  24. using namespace std;
  25.  
  26. void dfs(vector<int>& distances, int start, int sum, unordered_map<int, vector<int>>& graph){
  27.     distances[start] = sum;
  28.     for(int neigh : graph[start]){
  29.         if(distances[neigh] == -1 || distances[neigh] > sum + 1)
  30.             dfs(distances, neigh, sum + 1, graph);
  31.     }
  32. }
  33.  
  34. void play(){
  35.     int n, m;
  36.     cin >> n >> m;
  37.     vector<int> distances(n, -1);
  38.     unordered_map<int, vector<int>> graph;
  39.     int x, y, index;
  40.     for(int i = 0; i < m; i++){
  41.         cin >> x >> y;
  42.         graph[x - 1].push_back(y - 1);
  43.         graph[y - 1].push_back(x - 1);
  44.     }
  45.     cin >> index;
  46.    
  47.     dfs(distances, index - 1, 0, graph);
  48.    
  49.     for(int i = 0; i < n; i++){
  50.         if(i == index - 1)
  51.             continue;
  52.         cout << max(-1, distances[i] * 6) << " ";
  53.     }
  54.     cout << endl;
  55.    
  56. }
  57.  
  58. int main() {
  59.     int q;
  60.     cin >> q;
  61.     for(int i = 0; i < q; i++)
  62.         play();
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment