AcWing 853. 有边数限制的最短路
原题链接
简单
作者:
TaoZex
,
2019-08-04 16:22:48
,
所有人可见
,
阅读 1007
#include<bits/stdc++.h>
using namespace std;
const int N=510,M=1e4+10,INF=0x3f3f3f3f;
struct Edge{
int a,b,w;
}edge[M];
int n,m,k;
int d[N],backup[N];
int bf(){
memset(d,INF,sizeof(d));
d[1]=0;
for(int i=0;i<k;i++){ //最多更新k次
memcpy(backup,d,sizeof(d));
for(int j=0;j<m;j++){
int a=edge[j].a,b=edge[j].b,w=edge[j].w;
d[b]=min(d[b],backup[a]+w);
}
}
return d[n];
}
int main(){
cin>>n>>m>>k;
for(int i=0;i<m;i++){
int a,b,c;
cin>>a>>b>>c;
edge[i]={a,b,c};
}
int ans=bf();
if(ans>INF/2) cout<<"impossible"<<endl;
else cout<<ans<<endl;
}
这个题为啥不能用spfa()算法呢?
因为有边数限制
具体点呢?哈哈
因为存在负环····
谢谢你的回复,刚发现这位同学的追问,表示十分抱歉@Eureka
没关系的,哈哈
谢谢你