Advertisement
Guest User

Untitled

a guest
May 24th, 2018
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4.  
  5. #define INF (1 << 29)
  6.  
  7. using namespace std;
  8.  
  9. struct grafo{
  10. vector < vector <int> > adj;
  11. int nodos, aristas, inicial;
  12.  
  13. void leer(){
  14. cin>>nodos>>aristas;
  15. adj.resize(nodos+1);
  16. for(int cont=0;cont<aristas;cont++){
  17. int n1,n2;
  18. cin>>n1>>n2;
  19. adj[n1].push_back(n2);
  20. adj[n2].push_back(n1);
  21. }
  22. cin>>inicial;
  23. }
  24.  
  25. void BFS(){
  26. vector<int>distancia((nodos+1),INF);
  27. distancia[inicial]=0;
  28. queue<int>cola;
  29. cola.push(inicial);
  30. while(cola.size()>0){
  31. int aux=cola.front();
  32. cola.pop();
  33. for(int cont2=0;cont2<adj[aux].size();cont2++){
  34. if(distancia[aux]+6<distancia[adj[aux][cont2]]){
  35. distancia[adj[aux][cont2]]=distancia[aux]+6;
  36. cola.push(adj[aux][cont2]);
  37. }
  38. }
  39.  
  40. }
  41. for(int j=1;j<=nodos;j++){
  42. if(distancia[j]!=0){
  43. if(distancia[j]!=INF){
  44. cout<<distancia[j];
  45. }else{
  46. cout<<-1;
  47. }
  48. if(j!=nodos){
  49. cout<<" ";
  50. }else{
  51. cout<<endl;
  52. }
  53. }
  54. }
  55. }
  56. };
  57.  
  58. int main()
  59. {
  60. int casos;
  61. cin>>casos;
  62. for(int i=0;i<casos;i++){
  63. grafo g;
  64.  
  65. g.leer();
  66.  
  67. g.BFS();
  68. }
  69.  
  70. return 0;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement