Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream> //basic stream
- #include <random> //random gen
- #include <fstream> //files
- #include <cstdlib> //wowowowo
- #include <list> //chi
- #include <sstream> //llwagon
- using namespace std;//namespace
- /* classes
- */
- /* functions headers
- */
- void GetDijkstra(int &n,int &u);
- void GetDijkstra(int **tab);
- void SaveDijkstra(int n,int *dist,int *pred);
- void AlgorytmDijkstra(int s,int n,int **A,int *dist,int *pred);
- /* main
- */
- int main(int argc, char const *argv[]) {
- system("clear");
- //Pozyskanie danych wejsciowych
- int n,u;
- GetDijkstra(n,u);
- /**/
- // Inicjalizacj tablic
- int **tab;
- int *dist;
- int *pred;
- tab = new int * [n];
- for(int i=0; i<n; i++) {tab[i] = new int [n];}
- dist = new int[n];
- pred = new int[n];
- /**/
- //Wypelnienie tablicy danymi z pliku tekstowego
- GetDijkstra(tab);
- /**/
- //Glowny AlgorytmDijkstra
- AlgorytmDijkstra(u,n,tab,dist,pred);
- /**/
- //Zapis tablic pred i dist do pliku tekstowego
- SaveDijkstra(n,dist,pred);
- /**/
- // Zwalnianie pamieci po tablicach
- for(int i=0; i<n; i++) {delete [] tab[i];}
- delete [] tab;
- delete [] dist;
- delete [] pred;
- /**/
- return 0;
- }
- /* functions bodies
- */
- void GetDijkstra(int &n,int &u){
- ifstream plik("In0305.dll");
- if(plik.fail())
- cout << "error" << endl;
- plik>>n; //ilosc wierzcholkow
- plik>>u; //adres ujscia
- plik.close();
- }
- void GetDijkstra(int **tab){
- ifstream plik("In0305.dll");
- int n,u;
- if(plik.fail())
- cout << "error" << endl;
- plik>>n; //ilosc wierzcholkow
- plik>>u; //adres ujscia
- for(int j=0; j<n; j++) {
- for(int i=0; i<n; i++) {
- plik >> tab[i][j];
- }
- }
- plik.close();
- }
- void SaveDijkstra(int n,int *dist,int *pred){
- fstream plik;
- plik.open("Out0305.dll",ios::out);
- plik<<"dist[";
- for(int i=0; i<n; i++) {plik<<dist[i]<<" ";}
- plik<<"]"<<endl;
- plik<<"pred[";
- for(int i=0; i<n; i++) {plik<<pred[i]<<" ";}
- plik<<"]";
- plik.close();
- }
- void AlgorytmDijkstra(int s,int n,int **A,int *dist,int *pred){
- for(int i=0; i<n; i++) dist[i] = 2147483647;
- dist[n] = 0;
- for(int i=0; i<n; i++) pred[i] = -1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement