Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.52 KB | None | 0 0
  1. #include <iostream> //basic stream
  2. #include <random>   //random gen
  3. #include <fstream>  //files
  4. #include <cstdlib>   //wowowowo
  5. #include <list>      //chi
  6. #include <sstream>   //llwagon
  7. using namespace std;//namespace
  8. /* classes
  9.  */
  10. /* functions headers
  11.  */
  12. void GetDijkstra(int &n,int &u);
  13. void GetDijkstra(int **tab);
  14. void SaveDijkstra(int n,int *dist,int *pred);
  15. void AlgorytmDijkstra(int s,int n,int **A,int *dist,int *pred);
  16. /* main
  17.  */
  18. int main(int argc, char const *argv[]) {
  19.         system("clear");
  20.         //Pozyskanie danych wejsciowych
  21.         int n,u;
  22.         GetDijkstra(n,u);
  23.         /**/
  24.         // Inicjalizacj tablic
  25.         int **tab;
  26.         int *dist;
  27.         int *pred;
  28.         tab = new int * [n];
  29.         for(int i=0; i<n; i++) {tab[i] = new int [n];}
  30.         dist = new int[n];
  31.         pred = new int[n];
  32.         /**/
  33.         //Wypelnienie tablicy danymi z pliku tekstowego
  34.         GetDijkstra(tab);
  35.         /**/
  36.         //Glowny AlgorytmDijkstra
  37.         AlgorytmDijkstra(u,n,tab,dist,pred);
  38.         /**/
  39.         //Zapis tablic pred i dist do pliku tekstowego
  40.         SaveDijkstra(n,dist,pred);
  41.         /**/
  42.         // Zwalnianie pamieci po tablicach
  43.         for(int i=0; i<n; i++) {delete [] tab[i];}
  44.         delete [] tab;
  45.         delete [] dist;
  46.         delete [] pred;
  47.         /**/
  48.         return 0;
  49. }
  50. /* functions bodies
  51.  */
  52. void GetDijkstra(int &n,int &u){
  53.         ifstream plik("In0305.dll");
  54.         if(plik.fail())
  55.                 cout << "error" << endl;
  56.         plik>>n; //ilosc wierzcholkow
  57.         plik>>u; //adres ujscia
  58.         plik.close();
  59. }
  60. void GetDijkstra(int **tab){
  61.         ifstream plik("In0305.dll");
  62.         int n,u;
  63.         if(plik.fail())
  64.                 cout << "error" << endl;
  65.         plik>>n; //ilosc wierzcholkow
  66.         plik>>u; //adres ujscia
  67.         for(int j=0; j<n; j++) {
  68.                 for(int i=0; i<n; i++) {
  69.                         plik >> tab[i][j];
  70.                 }
  71.         }
  72.         plik.close();
  73. }
  74. void SaveDijkstra(int n,int *dist,int *pred){
  75.         fstream plik;
  76.         plik.open("Out0305.dll",ios::out);
  77.         plik<<"dist[";
  78.         for(int i=0; i<n; i++) {plik<<dist[i]<<" ";}
  79.         plik<<"]"<<endl;
  80.         plik<<"pred[";
  81.         for(int i=0; i<n; i++) {plik<<pred[i]<<" ";}
  82.         plik<<"]";
  83.         plik.close();
  84. }
  85. void AlgorytmDijkstra(int s,int n,int **A,int *dist,int *pred){
  86.         for(int i=0; i<n; i++) dist[i] = 2147483647;
  87.         dist[n] = 0;
  88.         for(int i=0; i<n; i++) pred[i] = -1;
  89.  
  90. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement