贪心最短路

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ljh736731592/article/details/100601631

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!

猜你喜欢

转载自blog.csdn.net/ljh736731592/article/details/100601631
今日推荐