Advertisement
Guest User

djsjjsjs

a guest
Feb 27th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.89 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. #define INFINIT 1000000000
  5. ifstream fin("dijkstra.in");
  6. ofstream fout("dijkstra.out");
  7. int n,m,d[1001],l,x,y,i,j,s,a[101][101],pmax=-1,f[1001];
  8. int main()
  9. {fin>>n>>s;
  10. while(fin>>x>>y>>l)
  11. a[x][y]=l;
  12.  
  13. for(i=1;i<=n;i++)
  14. for(j=1;j<=n;j++)
  15. if(a[i][j]==0) a[i][j]=INFINIT;
  16. for(i =1 ; i <= n ; i ++ )
  17. {
  18. f[i] = 0;
  19. d[i] = a[s][i];
  20. }
  21.  
  22. f[s] = 1, d[s] = 0;
  23. d[0] = INFINIT;
  24. for(int k = 1 ; k < n ; ++k)
  25. {
  26. int pmax = 0;
  27. for(i = 1 ; i <= n ; ++i)
  28. if(f[i] == 0 && d[i] < d[pmax])
  29. pmax = i;
  30.  
  31. if(pmax > -1)
  32. {
  33. f[pmax] = 1;
  34. for(i = 1; i <= n ; ++i)
  35. if(f[i] == 0 && d[i] > d[pmax] + a[pmax][i])
  36. d[i] = d[pmax] + a[pmax][i];
  37. }
  38. }
  39. for(i=1;i<=n;i++)
  40. if((d[i]==0 || d[i]==INFINIT) && i!=s) fout<<-1<<" ";
  41. else
  42. fout<<d[i]<<" ";
  43.  
  44. return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement