为什么输出结果是0x3f3f3f3f啊??? dijk模板
#include <bits/stdc++.h>
using namespace std;
int n, m, s;
const int maxn = 5e5+1;
struct newedge{
int u;
int v;
int w;
int nxt;
edge(int a, int b, int c) {
u = a; v = b; w = c;
}
}edge[maxn];
struct node{
int id, dis;
node(int a, int b){
id = a; dis = b;
}
bool operator < (const node &a)const {
return dis>a.dis;
}
};
int head[maxn], cnt;
void addedge(int u, int v, int w) {
cnt++;
edge[cnt].v = v;
edge[cnt].w = w;
edge[cnt].nxt = head[u];
head[u] = cnt;
}
int dis[maxn], visit[maxn];
void dijk(int s) {
for(int i = 1;i <= maxn;i++) {
head[i] = -1;
edge[i].nxt = -1;
dis[i] =(1 << 31) - 1;
}
priority_queue <node> g;
g.push(node(s, dis[s]));
while(!g.empty()) {
struct node u = g.top();
g.pop();
if(visit[u.id]) continue;
visit[u.id] = 1;
for(int i = head[u.id];~i;i = edge[i].nxt) {
newedge e = edge[i];
if(visit[e.v]) continue;
if(u.dis + e.w < dis[e.v]){
dis[e.v] = u.dis + e.w;
g.push(node(e.v, dis[e.v]));
}
}
}
}
int main() {
scanf("%d%d%d", &n, &m, &s);
int a, b, c;
for(int i = 1;i<=m;i++){
scanf("%d%d%d", &a, &b, &c);
addedge(a, b, c);
}
dijk(s);
for(int i =1;i<=n;i++)
printf("%d ", dis[i]);
return 0;
}