#include #include #include #include using namespace std; int s[2100]; int t[2100]; int y[2100]; int m[2100]; vector > > g[60]; int v[60][310]; int ijk[60][310]; int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); for(int i=0;i > > Q; Q.push(make_pair(0,make_pair(0,0))); while(Q.size()){ int cost=-Q.top().first; int at=Q.top().second.first; int val=Q.top().second.second; Q.pop(); if(v[at][val])continue; v[at][val]=1; for(int i=0;icost+g[at][i].second.second){ ijk[to][toc]=cost+g[at][i].second.second; Q.push(make_pair(-ijk[to][toc],make_pair(to,toc))); } } } int ret=999999999; for(int i=0;i<=b;i++)ret=min(ret,ijk[a-1][i]); if(ret>99999999)printf("-1\n"); else printf("%d\n",ret); }