1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| int ecnt = 2; int n, m, k, s, t; int head[150005], dis[150005], vis[150005]; struct edge { int to, next, w; } g[300010]; void add_edge(int u, int v, int w) { g[ecnt] = (edge) { v, head[u], w }; head[u] = ecnt ++; }
struct node { int dis, pos; friend bool operator < (const node &a, const node &b) { return a.dis > b.dis; } }; priority_queue<node> q;
void dijkstra() { for (int i = 0; i <= n; i ++) dis[i] = 8e18; dis[s] = 0; q.push((node) { dis[s], s }); while (!q.empty()) { int u = q.top().pos; q.pop(); if (vis[u]) continue; vis[u] = true; for (int e = head[u]; e; e = g[e].next) { int v = g[e].to; if (dis[v] > dis[u] + g[e].w) { dis[v] = dis[u] + g[e].w; q.push((node) { dis[v], v }); } } } }
|
未找到相关的 Issues 进行评论
请联系 @JeffersonQin 初始化创建