Advertisement
Green_13

დეიკსტრას ალგორითმი

Feb 12th, 2013
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.16 KB | None | 0 0
  1. //Green ))
  2. #include<iostream>
  3. #include<stdio.h>
  4. #include<cstdlib>
  5. #include<math.h>
  6. #include<algorithm>
  7. #include<fstream>
  8. #include<string>
  9. #include<queue>
  10. #include<bitset>
  11. #include<stack>
  12. #define PI 3.141592653589793
  13. #define INF 99999
  14. using namespace std;
  15. int n,a,b,g[107][107],viz[170]={0},d[700],mina,w,z;
  16. int main() {
  17.     freopen("input.txt","r",stdin);
  18.     freopen("output.txt","w",stdout);
  19.     //shemotana
  20.     cin>>n>>a>>b;
  21.     for (int i=1;i<=n;i++)
  22.       for (int j=1;j<=n;j++)
  23.         cin>>g[i][j];
  24.     //d_s usasrulobebit shevseba
  25.     for (int i=1;i<=n;i++)
  26.       d[i]=INF;
  27.     d[a]=0;    
  28.     //mtavari cikli
  29.     for (int i=1;i<=n;i++){
  30.       //d masivshi minimumi
  31.       w=-INF;
  32.       mina=INF;
  33.       for (int j=1;j<=n;j++)
  34.         if ((mina>d[j]) && (viz[j]==0)) { mina=d[j]; w=j;}
  35.         if (w<0) break;
  36.       viz[w]=1;
  37.       //mezoblebis shecvla
  38.       for (int k=1;k<=n;k++)
  39.         if ((g[w][k]>-1) && (w!=k)) {
  40.           z=g[w][k];
  41.           if (d[k]>(d[w]+z)) d[k]=d[w]+z;                
  42.         }                    
  43.     }
  44.     //gamotana
  45.     if (d[b]==INF) cout<<-1;
  46.                     else cout<<d[b];    
  47. return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement