Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <map>
- #include <set>
- #include <list>
- #include <cmath>
- #include <ctime>
- #include <deque>
- #include <queue>
- #include <stack>
- #include <string>
- #include <bitset>
- #include <cstdio>
- #include <limits>
- #include <vector>
- #include <climits>
- #include <cstring>
- #include <cstdlib>
- #include <fstream>
- #include <numeric>
- #include <sstream>
- #include <iostream>
- #include <algorithm>
- #include <unordered_map>
- using namespace std;
- void dfs(vector<int>& distances, int start, int sum, unordered_map<int, vector<int>>& graph){
- distances[start] = sum;
- for(int neigh : graph[start]){
- if(distances[neigh] == -1 || distances[neigh] > sum + 1)
- dfs(distances, neigh, sum + 1, graph);
- }
- }
- void play(){
- int n, m;
- cin >> n >> m;
- vector<int> distances(n, -1);
- unordered_map<int, vector<int>> graph;
- int x, y, index;
- for(int i = 0; i < m; i++){
- cin >> x >> y;
- graph[x - 1].push_back(y - 1);
- graph[y - 1].push_back(x - 1);
- }
- cin >> index;
- dfs(distances, index - 1, 0, graph);
- for(int i = 0; i < n; i++){
- if(i == index - 1)
- continue;
- cout << max(-1, distances[i] * 6) << " ";
- }
- cout << endl;
- }
- int main() {
- int q;
- cin >> q;
- for(int i = 0; i < q; i++)
- play();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment