ford(最短路径).有边数限制的最短路.acwing 853

code:
#include<bits/stdc++.h>//xfl using namespace std; const int N = 2e4+5; const int maxx = 0x3f3f3f3f; int f[N],o[N],to[N],d[N],n,m,k,v[N]; void ford() { for(int j=1;j<=k;++j) { memcpy(o,d,sizeof d); for(int i=1;i<=m;++i) d[to[i]]=min(d[to[i]],o[f[i]]+v[i]); } } int main() { scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=m;++i)scanf("%d%d%d",&f[i],&to[i],&v[i]); memset(d,0x3f,sizeof d);d[1]=0; ford(); if(d[n]<maxx/2)cout<<d[n]; else puts("impossible"); return 0; }
浙公网安备 33010602011771号