Advertisement
Falak_Ahmed_Shakib

floydwarsh()

Oct 15th, 2020
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. using ll = long long;
  4. const ll N=503,inf=INFINITY;
  5. ll n,m,q;
  6. ll ara[N][N];
  7.  
  8. void input()
  9. {
  10. cin>>n>>m>>q;
  11.  
  12. for(ll i=1;i<=n;i++)
  13. {
  14. for(ll j=1;j<=n;j++)
  15. {
  16. ara[i][j]=inf;
  17. }
  18. }
  19.  
  20. for(ll i=1;i<=n;i++)ara[i][i]=0;
  21.  
  22.  
  23. for(ll i=1;i<=m;i++)
  24. {ll a,b,w;
  25. cin>>a>>b>>w;
  26.  
  27. if(ara[a][b]>w)
  28. {
  29.  
  30.  
  31. ara[a][b]=w;
  32. ara[b][a]=w;
  33.  
  34. }
  35. }
  36.  
  37.  
  38.  
  39.  
  40. }
  41.  
  42. void floydwarsh()
  43. {
  44. for(ll k=1;k<=n;k++)
  45. {
  46. for(ll i=1;i<=n;i++)
  47. {
  48. for(ll j=1;j<=n;j++)
  49. {
  50. if(ara[i][k]+ara[k][j]<ara[i][j] && ara[i][k]!=inf && ara[k][j]!=inf)
  51. {
  52. ara[i][j]=ara[i][k]+ara[k][j];
  53. }
  54. }
  55. }
  56. }
  57.  
  58. }
  59.  
  60. int main()
  61. {
  62.  
  63. input();
  64.  
  65. floydwarsh();
  66.  
  67. while(q--)
  68. {
  69. ll a,b;
  70. cin>>a>>b;
  71.  
  72. if(ara[a][b]==inf)cout<<-1<<endl;
  73. else cout<<ara[a][b]<<endl;
  74.  
  75. }
  76.  
  77.  
  78.  
  79.  
  80. }
  81.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement