社区讨论

bellmanford求调

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

讨论操作

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

当前回复
7 条
当前快照
1 份
快照标识符
@lo7v14tm
此快照首次捕获于
2023/10/27 08:13
2 年前
此快照最后确认于
2023/10/27 08:13
2 年前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,m,s;
struct edge{
    int u,v,w;
}k[500005];
int dis[10005];

inline int read()
{
    int w=0;
    char c=getchar();
    while(c<'0'||c>'9')
    {
        c=getchar();
    }
    while(c>='0'&&c<='9')
    w=w*10+c-'0',c=getchar();
    return w;
}

void bellman_ford()
{
    memset(dis,0x3f3f3f3f,sizeof(dis));
    dis[s]=0;
    for(int i=1;i<n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            int a=k[j].u;
            int b=k[j].v;
            int c=k[j].w;
            if(dis[a]!=0x3f3f3f3f&&dis[b]>dis[a]+c)
            dis[b]=dis[a]+c;
        }
    }
}
signed main()
{
    cin>>n>>m>>s;
    for(int i=1,u,v,w;i<=m;i++)
    {
        u=read();
        v=read();
        w=read();
        // cin>>u>>v>>w;
        k[i].u=u;
        k[i].v=v;
        k[i].w=w;
    }
    bellman_ford();
    for(int i=1;i<=n;i++)
    cout<<((dis[i]==0x3f3f3f3f)?2147483647:dis[i])<<' '; 
    return 0;
}

回复

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

正在加载回复...