一个非常抽象的问题
  • 板块灌水区
  • 楼主StrFaith
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/10/12 13:03
  • 上次更新2024/10/12 17:27:57
查看原帖
一个非常抽象的问题
970752
StrFaith楼主2024/10/12 13:03

如下

#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有什么区别???为什么要两个

2024/10/12 13:03
加载中...