如下
#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;
void 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;
}
long long dis[maxn]; int visit[maxn];
void dijk(int s) {
for(int i = 1;i <= n;i++) {
dis[i] =int((1 << 31) - 1);
visit[i] = 0;
}
dis[s] = 0;
priority_queue <node> g;
g.push(node(s, 0));
while(!g.empty()) {
node u = g.top();
g.pop();
if(u.dis > dis[u.id])
continue;
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(dis[e.v] > dis[u.id] + e.w ){
//dis[e.v] = dis[u.id] + e.w;
dis[e.v] = u.dis + e.w;
if(!visit[e.v])
g.push(node(e.v, dis[e.v]));
}
}
}
}
为什么newedge结构体里把void去掉就会报错?
而node结构体里加上void就会报错,而且dijk函数里dis[i] = int((1<<31)-1)也会报错
???
还有,dia[i]与i.dis有什么区别???为什么要两个