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;
}

 

posted @ 2020-12-29 16:33  纸上的彩虹  阅读(43)  评论(0)    收藏  举报