Advertisement
ekzolot

Untitled

Dec 23rd, 2021
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4. vector <vector<long long>> cringe(int n, vector <vector <int>>& graph, vector <vector <long long>>& price, int start_point, long long price_now, int point_now){
  5.     graph.resize(n, vector<int> (n));
  6.     price.resize (n, vector <long long> (n, -1));
  7.     for (int i=0; i<n; i++){
  8.         if (i!=point_now){
  9.             if (graph[point_now][i]!=0 && (price[start_point][i]==-1 || price[start_point][i]>graph[point_now][i]+price_now)){
  10.                    price[start_point][i]=graph[point_now][i]+price_now;
  11.                    long long l=price_now;
  12.                    int k=point_now;
  13.                    price_now+=graph[point_now][i];
  14.                    point_now=i;
  15.                    cringe(n, graph, price, start_point, price_now, point_now);
  16.                    price_now=l;
  17.                    point_now=k;
  18.             }
  19.         }
  20.     }
  21.     return price;
  22. }
  23. int main(){
  24.     ios::sync_with_stdio(0);
  25.     cin.tie(0);
  26.     cout.tie(0);
  27.     int n, z, t;
  28.     cin>>n>>z>>t;
  29.     vector <vector <int>> graph(n, vector <int> (n));
  30.     vector <vector <long long>> price(n, vector <long long> (n, -1));
  31.     vector <pair<int, int>> requests(t);
  32.     for (int i=0; i<z; i++){
  33.         int d, e, f;
  34.         cin>>d>>e>>f;
  35.         graph[d-1][e-1]=f;
  36.     }
  37.     for (int i=0; i<t; i++){
  38.         cin>>requests[i].first>>requests[i].second;
  39.         requests[i].first--;
  40.         requests[i].second--;
  41.     }
  42.     int start_point;
  43.     int point_now;
  44.     long long price_now;
  45.     for (int i=0; i<n; i++){
  46.         start_point=i;
  47.         point_now=i;
  48.         price_now=0;
  49.         cringe(n, graph, price, start_point, price_now, point_now);
  50.     }
  51.     for (int i=0; i<t; i++){
  52.         if (requests[i].first==requests[i].second){
  53.             cout<<0<<"\n";
  54.         }else{
  55.             cout<<price[requests[i].first][requests[i].second]<<"\n";
  56.         }
  57.     }
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement