社区讨论

SPFA 10分

P3371【模板】单源最短路径(弱化版)参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mi5i682n
此快照首次捕获于
2025/11/19 12:29
4 个月前
此快照最后确认于
2025/11/19 12:29
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
#include<queue>
using namespace std;
int front=1,rear=1,w[3000][3000],dis[10000],flag[10000],n,m,s,x,y,z;
queue<int>dui;
/*void push(int x)
{
    dui[rear]=x;
    rear++;
}
int pop()
{
    if (rear==front) return -99999;
    int t=dui[front];
    front++;
    return t;
}*/
void spfa()
{
    int i,j;
    cin>>n>>m>>s;
    for (i=1;i<=n;i++)
    {
        for (j=1;j<=n;j++)
        {
            if (i==j) w[i][j]=0;
            else w[i][j]=2147483647;
        }
    }
    for (i=1;i<=m;i++)
    {
        cin>>x>>y>>z;
        w[x][y]=z;
    }
    for (i=1;i<=n;i++) dis[i]=2147483647;
    dis[s]=0;
    dui.push(s);
    flag[s]=1;
    while (!dui.empty())
    {
        x=dui.front();
        dui.pop();
        flag[x]=0;
        for (i=1;i<=n;i++)
        {
            if (w[x][i]!=2147483647)
            {
                if (dis[i]>dis[x]+w[x][i])
                {
                    dis[i]=dis[x]+w[x][i];
                    if (flag[i]==0) 
                    {
                        dui.push(i);
                        flag[i]=1;
                    }
                }
            }
        }
    }
    for (i=1;i<=n;i++)
    {
        cout<<dis[i]<<" ";
    }
}
int main()
{
    spfa();
    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...