SPFA20分求助
查看原帖
SPFA20分求助
1303372
Michael_114楼主2024/12/17 18:27

本人刚学SPFA -INF秒,求助

#include <iostream>
#include <queue>
#include <vector>
#include <cstring>
using namespace std;

const int MAXN = 100; 
struct Edge {
    int to;
    int cost;
    Edge(int t, int c) : to(t), cost(c) {}
};

vector<Edge> graph[MAXN]; 
int dist[MAXN];  
bool inQueue[MAXN];  

void spfa(int start) {
    memset(dist, 0x3f, sizeof(dist));  
    dist[start] = 0;
    queue<int> q;
    q.push(start);
    inQueue[start] = true;

    while (!q.empty()) {
        int u = q.front();
        q.pop();
        inQueue[u] = false;

        for (const Edge& edge : graph[u]) {
            int v = edge.to;
            int cost = edge.cost;
            if (dist[v] > dist[u] + cost) {
                dist[v] = dist[u] + cost;
                if (!inQueue[v]) {
                    q.push(v);
                    inQueue[v] = true;
                }
            }
        }
    }
}

int main() {
    int a,b;
    cin>>a>>b;
    graph[0].push_back(Edge(a, a));
    graph[0].push_back(Edge(b, b));

    spfa(0);
    cout <<dist[a] + dist[b] << endl;

    return 0;
}
2024/12/17 18:27
加载中...