蒟蒻求助 SPFA
查看原帖
蒟蒻求助 SPFA
1092781
_____QWQ_____楼主2023/12/17 14:06

只对了五个点(ac46) 悬棺

蒟蒻的代码

#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

2023/12/17 14:06
加载中...