Advertisement
Rentib

ostatnia bitwa

Jan 24th, 2020
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main(){
  4.   long long n, m, q, INF =  LLONG_MAX;
  5.   cin >> n >> m >> q;
  6.   long long d[n][n];
  7.   for(long long i = 0;i < n;i++)
  8.     for(long long j = 0;j < n;j++){
  9.       d[i][j] = INF;
  10.       if(i == j)
  11.         d[i][j] = 0;
  12.     }
  13.   for(long long i = 0, a, b, w;i < m;i++){
  14.     cin >> a >> b >> w; a--; b--;
  15.     d[a][b] = min(d[a][b], w);
  16.   }
  17.   for(long long k = 0; k < n; ++k) {
  18.     for(long long i = 0; i < n; ++i) {
  19.       for(long long j = 0; j < n; ++j){
  20.         if(d[i][k] < INF && d[k][j] < INF)
  21.           d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
  22.       }
  23.     }
  24.   }
  25.   for (long long i = 0; i < n; ++i) {
  26.     for (long long j = 0; j < n; ++j) {
  27.       for (long long t = 0; t < n; ++t) {
  28.         if (d[i][t] < INF && d[t][t] < 0 && d[t][j] < INF){
  29.           cout << "NIE";
  30.           return 0;
  31.         }
  32.       }
  33.     }
  34.   }
  35.   for(long long i = 0, a, b;i < q;i++){
  36.     cin >> a >> b; a--; b--;
  37.     if(d[a][b] == INF) cout << "NIE\n";
  38.     else cout << d[a][b] << '\n';
  39.   }
  40.   cout << '\n';
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement