제출 #897236

#제출 시각아이디문제언어결과실행 시간메모리
897236SalihSahinAutobus (COCI22_autobus)C++14
0 / 70
54 ms1824 KiB
#include<bits/stdc++.h> #define pb push_back #define mp make_pair using namespace std; const int mod = 1e9 + 7; const int N = 3e5 + 5; int main(){ int n, m; cin>>n>>m; vector<vector<int> > edge(n, vector<int>(n, -1)); for(int i = 0; i < m; i++){ int u, v, w; cin>>u>>v>>w; if(edge[u-1][v-1] == -1) edge[u-1][v-1] = w; else edge[u-1][v-1] = min(edge[u-1][v-1], w); } int k, q; cin>>k>>q; int dis[n][n][n]; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ for(int l = 1; l < n; l++){ dis[i][j][l] = mod; } dis[i][j][0] = 0; } } for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ if(edge[i][j] != -1) dis[i][j][1] = edge[i][j]; if(i == j) dis[i][j][1] = 0; } } for(int asama = 2; asama < n; asama++){ for(int l = 0; l < n; l++){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ dis[i][j][asama] = min(dis[i][j][asama], dis[i][l][asama-1] + dis[l][j][asama-1]); } } } } while(q--){ int c, d; cin>>c>>d; c--, d--; if(dis[c][d][min(k, n-1)] == mod) cout<<-1<<endl; else cout<<dis[c][d][min(k, n-1)]<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...