版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
SPFA模板
显然用哪个队列啊https://blog.csdn.net/dhdhdhx/article/details/95581696
你们都用SPFA或dij
太次了
看我贪心最短路
#include<bits/stdc++.h>
using namespace std;
long long m,n,s,t;
long long a[1000001],b[1000001],v[1000001],z[1000001];
long long min_(long long a,long long b)
{
return (a>b)?b:a;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&s,&t);
for(int i=1;i<=n;i++)
z[i]=1e9;
z[s]=0;
for(int i=1;i<=m;i++)
{
scanf("%lld%lld%lld",&a[i],&b[i],&v[i]);
}
for(int i=1;i<=m;i++)
{
z[b[i]]=min_(z[b[i]],(z[a[i]]+v[i]));
}
printf("%lld",z[t]);
exit(0);
}
失误
多扫几次
时间复杂度O(1e7)
#include<bits/stdc++.h>
using namespace std;
long long m,n,s,t;
long long a[1000001],b[1000001],v[1000001],z[1000001];
long long min_(long long a,long long b)
{
return (a>b)?b:a;
}
int main()
{
scanf("%lld%lld%lld%lld",&n,&m,&s,&t);
for(int i=1;i<=n;i++)
z[i]=1e9;
z[s]=0;
for(int i=1;i<=m;i++)
{
scanf("%lld%lld%lld",&a[i],&b[i],&v[i]);
}
for(int j=1;j<=1e7/m;j++)
for(int i=1;i<=m;i++)
{
z[b[i]]=min_(z[b[i]],(z[a[i]]+v[i]));
}
printf("%lld",z[t]);
exit(0);
}
AC!