Advertisement
Guest User

Untitled

a guest
Apr 1st, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #define inf 1000000
  4. using namespace std;
  5.  
  6. //ifstream f("lungimerandmax.in");
  7. //ofstream g("lungimerandmax.out");
  8.  
  9. const int NMax=105;
  10. int n, m, k, matrice[NMax][NMax];
  11. int distanta[NMax];
  12. bool vizitat[NMax];
  13.  
  14. void citire()
  15. {
  16. cin>>n>>m>>k;
  17. int a, b;
  18. for(int i=1; i<n; i++)
  19. for(int j=i+1; j<=n; j++)
  20. matrice[i][j]=matrice[j][i]=inf;
  21. for(int i=1; i<=m; i++)
  22. {
  23. cin>>a>>b;
  24. matrice[a][b]=1;
  25. }
  26. }
  27.  
  28. void Dijkstra()
  29. {
  30. vizitat[k]=true;
  31. for(int i=1; i<=n; i++)
  32. distanta[i]=matrice[1][i];
  33. for(int i=1; i<=n; i++)
  34. {
  35. int minim=inf;
  36. int poz;
  37. for(int j=1; j<=n; j++)
  38. if(vizitat[j]==false)
  39. if(distanta[j]<minim)
  40. {
  41. minim=distanta[j];
  42. poz=j;
  43. }
  44. vizitat[poz]=true;
  45. for(int j=1; j<=n; j++)
  46. if(distanta[poz]+matrice[poz][j]<distanta[j])
  47. distanta[j]=distanta[poz]+matrice[poz][j];
  48. }
  49. }
  50.  
  51. void afisare()
  52. {
  53. int ok=0;
  54. for(int i=1; i<=n; i++)
  55. if(distanta[i]==k)
  56. {
  57. cout<<i<<" ";
  58. ok=1;
  59. }
  60. if(ok==0)
  61. cout<<"Nu exista";
  62. }
  63.  
  64. int main()
  65. {
  66. citire();
  67. Dijkstra();
  68. afisare();
  69. return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement