社区讨论

蒟蒻求助 SPFA

P1807最长路参与者 2已保存回复 18

讨论操作

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

当前回复
18 条
当前快照
1 份
快照标识符
@lq93670z
此快照首次捕获于
2023/12/17 14:08
2 年前
此快照最后确认于
2023/12/17 16:13
2 年前
查看原帖
只对了五个点(ac46) 悬棺
蒟蒻的代码
CPP
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;
int n,m;
int a[1510][1510];
int d[1510];
bool f[1510];
void spfa()
{
    for(int i=1;i<=n;i++) d[i]=-1e9;
    queue<int> q;
    q.push(1);
    d[1]=0;
    while(!q.empty()) 
    {
        int u=q.front();
        for(int i=1;i<=n;i++)
        {
            if(d[u]+a[u][i]>d[i]&&a[u][i]!=0)
            {
                d[i]=d[u]+a[u][i];
                if(!f[i])
                {
                    f[i]=true;
                    q.push(i);
                }
            }
        }
        q.pop();
        f[u]=false;
    }
}
int main()
{
    scanf("%d %d",&n,&m);
    for(int i=1;i<=m;i++)
    {
        int u,v,l;
        scanf("%d %d %d",&u,&v,&l);
        a[u][v]=l;
    }

    spfa();
    if(d[n]!=-1e9) printf("%d",d[n]);
    else printf("-1");
    return 0;
}
题目:p1807

回复

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

正在加载回复...