动规,走 k 个点走到 n 点的走法为其本身加上走 k-1 个点走到终点为 n 点的 起点处 的走法
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
int n,m;
int A[25][25],dp[25][25];
while(cin>>n>>m)
{
if(n==0&&m==0)break;
int s,e,T;
memset(A,0,sizeof(A));
for(int i=1;i<=m;i++)
{
cin>>s>>e;
A[s+1][e+1]=1;
}
cin>>T;
while(T--)
{
memset(dp,0,sizeof(dp));
int k;
cin>>s>>e>>k;
s++;e++;
dp[0][s]=1;
for(int i=1;i<=k;i++)
{
for(int j=1;j<=n;j++)
{
for(int l=1;l<=n;l++)
{
if(A[j][l])dp[i][l]=(dp[i][l]+dp[i-1][j])%1000;
}
}
}
cout<<dp[k][e]<<endl;
}
}
return 0;
}