dijkstra+链式前向星+堆优化80pts#9#10TLE代码求调

P1119 灾后重建

AC ```c #include <iostream> #include <cstring> using namespace std; const int maxn = 201; int n, m, q, tim[201],vis[201] = { 0 }; int map[maxn][maxn] = { }; int main() { cin >> n >> m; memset(map, 0x3f, sizeof(map)); for(int i = 0; i < n; i++) { cin >> tim[i]; } int a, b, c; for(int i = 0; i < m; i++) { cin >> a >> b >> c; map[a][b] = map[b][a] = c; } cin >> q; for(int v = 0; v < q; v++) { cin >> a >> b >> c; for(int i = 0; i < n; i++) { if(tim[i] <= c && !vis[i]) { vis[i] = 1; for(int j = 0; j < n; j++) { for(int k = 0; k < n; k++) { map[j][k] = min(map[j][k],map[j][i] + map[i][k]); } } } } if(tim[a] <= c && tim[b] <= c && map[a][b] != 0x3f3f3f3f) cout << map[a][b] <<endl; else cout << -1 <<endl; } return 0; } ```
by timmyliao @ 2024-02-03 12:31:29


@[caoruiqi](/user/932094) 我也是堆优化加链式前向星 先是40分然后70分一直不知道错哪里 不过这道题朴素版n^2是不是比mlogm快一丢丢?
by Liurunyao0 @ 2024-02-04 16:09:09


|