???我的dijkstra在AcWing上TLE??
  • 板块灌水区
  • 楼主vegetable_ste
  • 当前回复18
  • 已保存回复18
  • 发布时间2021/10/19 14:01
  • 上次更新2023/11/4 03:18:13
查看原帖
???我的dijkstra在AcWing上TLE??
305002
vegetable_ste楼主2021/10/19 14:01
#include <bits/stdc++.h>
using namespace std;
const int N = 1.5e5 + 10;
int n, m;
typedef pair<int, int> PII;
#define mp make_pair
int dist[N];
vector<PII> e[N];
void dijkstra() {
    memset(dist, 0x3f, sizeof dist);
    dist[1] = 0;
    priority_queue<PII, vector<PII>, greater<PII> > Q;
    Q.push(mp(0, 1));
    while(!Q.empty()) {
        int u = Q.top().second; Q.pop();
        for(unsigned i = 0; i < e[u].size(); i ++ ) {
            int v = e[u][i].first, w = e[u][i].second;
            if(dist[u] < 1e9 && dist[v] > dist[u] + w) {
                dist[v] = dist[u] + w;
                Q.push(mp(dist[v], v));
            }
        }
    }
//  for(int i = 1; i <= n; i ++ ) cout << dist[i] << " ";
//    cout << endl;
}
int main() {
    ios::sync_with_stdio(0);
    cin >> n >> m;
    for(int i = 1; i <= m; i ++ ) {
        int u = 0, v = 0, w = 0; cin >> u >> v >> w;
        e[u].push_back(mp(v, w));// e[v].push_back(mp(u, w));
    }
    dijkstra();
    if(dist[n] < 1e9) cout << dist[n] << endl;
    else cout << -1 << endl;
    return 0;
}
2021/10/19 14:01
加载中...