只对了五个点(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