作者:
Yangchang
,
2023-01-25 20:52:33
,
所有人可见
,
阅读 11
#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
struct{int u,v,w;} edge[maxn];
int cnt,n,m,k,dis[maxn],was[maxn];
int main(){
cin>>n>>m>>k;
memset(dis+1,0x3f,sizeof(dis[0])*(n));
dis[1] = 0;
for(int i = 1;i<=m;++i) cin>>edge[i].u>>edge[i].v>>edge[i].w;
for(int i = 1;i<=k;++i){
memcpy(was,dis,sizeof(dis[0])*(n+1));
for(int j = 1;j<=m;++j)
dis[edge[j].v] = min(dis[edge[j].v],was[edge[j].u] + edge[j].w);
}
if(dis[n] >= 0x0f3f3f3f) cout<<"impossible";
else cout<<dis[n];
}