TawratNibir

Untitled

Jan 30th, 2026
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.85 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define int long long
  5. const int M = 1e9+7;
  6. const int N = 1e7+5;
  7. vector<vector<int>> adjMat;
  8. int n, m, q;
  9. int memo[105][105][105];
  10. int floyd(int i,int j,int k){
  11.  
  12.     if(k==0) return adjMat[i][j];
  13.     if(memo[i][j][k]!=INT_MIN) return memo[i][j][k];
  14.     int maxi1 = INT_MIN;
  15.     int maxi2 = INT_MIN;
  16.     maxi1 = max(maxi1,floyd(i,j,k-1));
  17.     maxi2 = max({maxi2,floyd(i,k,k-1),floyd(k,j,k-1)});
  18.     return memo[i][j][k]=min(maxi1,maxi2);
  19. }
  20. int32_t main() {
  21.     int tt = 1;
  22.     while((cin >> n >> m >> q) && (n!=0 && m!=0 && q!=0)){
  23.         adjMat.assign(n+1, vector<int>(n+1, INT_MAX));
  24.         for (int i = 0; i < 105; ++i)
  25.         {
  26.             for (int j = 0; j < 105; ++j)
  27.             {
  28.                 for (int k = 0; k < 105; ++k)
  29.                 {
  30.                     memo[i][j][k] = INT_MIN;
  31.                 }
  32.             }
  33.         }
  34.         for(int i=0;i<m;++i) {
  35.             int u, v, w;
  36.             cin >> u >> v >> w;
  37.             adjMat[u][v] = w;
  38.             adjMat[v][u] = w;
  39.         }
  40.         for(int i=1;i<=n;++i) {
  41.             for(int j=1;j<=n;++j) {
  42.                 if(i == j) adjMat[i][j] = 0;
  43.                 // cout << adjMat[i][j] << " ";
  44.             }
  45.             // cout << endl;
  46.         }
  47.         vector<vector<int>> ans(n+1,vector<int>(n+1));
  48.         for(int i=1;i<=n;++i) {
  49.             for (int j = 1; j <= n; ++j)
  50.             {
  51.                 if(i==j) continue;
  52.                 int dist = floyd(i,j,n);
  53.                 ans[i][j] = dist;
  54.             }
  55.         }
  56.         if(tt!=1)cout << "\n";
  57.         cout << "Case " << "#" << (tt++) << "\n";
  58.         while(q--){
  59.             int l ,r;
  60.             cin >> l >> r;
  61.             if(ans[l][r]==INT_MAX) cout << "no path\n";
  62.             else cout << ans[l][r] << "\n";
  63.         }
  64.     }
  65.    
  66.    
  67.  
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment