Advertisement
Guest User

Untitled

a guest
Feb 20th, 2018
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.57 KB | None | 0 0
  1. #define lli long long int
  2. #define sf scanf
  3. #define pf printf
  4. #define pi acos(-1)
  5. #define READ freopen("in.txt", "r", stdin)
  6. #define WRITE freopen("out.txt", "w", stdout)
  7. #define INF 1000000000000000000
  8. #define dist(ax,ay,bx,by) sqrt((ax-bx)*(ax-bx)+(ay-by)*(ay-by))
  9. #define gcd(a,b) __gcd(a,b)
  10. #define lcm(a,b) (a*b)/__gcd(a,b)
  11. #define m_p(a,b) make_pair(a,b)
  12. #define pb push_back
  13. #define pii pair< int, int >
  14. #define ppi pair< pii, int >
  15. #define ff first
  16. #define ss second
  17. #define ms(name,reference) memset(name,reference,sizeof(name))
  18. #define fast ios_base::sync_with_stdio(false),cin.tie(NULL)
  19. #include<bits/stdc++.h>
  20. using namespace std;
  21. #define MAX 1005
  22. vector<int>edge[MAX];
  23. int level[MAX];
  24. bool vis[MAX];
  25. void bfs(int s)
  26. {
  27. memset(vis,false,sizeof(vis));
  28. memset(level,-1,sizeof(level));
  29. queue<int>q;
  30. int u,v,i;
  31. level[s]=0;
  32. q.push(s);
  33. vis[s]=true;
  34. while(!q.empty()){
  35. u=q.front();
  36. q.pop();
  37. for(i=0;i<edge[u].size();i++){
  38. v=edge[u][i];
  39. if(!vis[v]){
  40. vis[v]=true;
  41. level[v]=level[u]+6;
  42. q.push(v);
  43. }
  44. }
  45. }
  46. }
  47. int main()
  48. {
  49. int t,m,n,a,b,i,x;
  50. scanf("%d",&t);
  51. while(t--){
  52. scanf("%d %d",&m,&n);
  53. for(i=0;i<n;i++){
  54. scanf("%d %d",&a,&b);
  55. edge[a].push_back(b);
  56. edge[b].push_back(a);
  57. }
  58. scanf("%d",&x);
  59. bfs(x);
  60. for(i=1;i<=m;i++){
  61. if(i==x)continue;
  62. printf("%d ",level[i]);
  63. }
  64. printf("\n");
  65. for(i=0;i<=m;i++)
  66. edge[i].clear();
  67. }
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement