#include int mod=1'000'000'007; void add_eq(int&x,int y){x+=y;if(mod<=x)x-=mod;} int main(){ std::cin.tie(nullptr);std::ios_base::sync_with_stdio(false); int n=0; int q,m,k;std::cin>>q>>m>>k; std::vector>prog(m); for(int i=0;i>u>>v>>w;u--,v--; prog.at(i)=std::tuple(u,v,w); if(n(n)); for(int i=0;i(n)); for(int i=k;i>=0;i--){ for(auto[u,v,w]:prog){ if(w<=i){ add_eq(new_dp.at(i).at(v),dp.at(i-w).at(u)); } } } dp.swap(new_dp); } int ans=0; for(int x:dp.at(k))add_eq(ans,x); std::cout< new_dp[ v ][ j + w ] のように遷移です。 */