标签:std memory 个数 ace 注意 sample 决定 split ott
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 3630 Accepted Submission(s): 1402
1 //2017-08-05 2 #include <cstdio> 3 #include <cstring> 4 #include <iostream> 5 #include <algorithm> 6 7 using namespace std; 8 9 const int N = 30; 10 const int MOD = 1000; 11 int n, m, grid[N][N], dp[N][N][N];//dp[i][j][k]表示从i点到j正好走k步的方法数,转移方程为dp[i][j][k] = sum(dp[i]][v][k-1]) | j到v有边 12 13 int main() 14 { 15 while(scanf("%d%d", &n, &m)!=EOF){ 16 if(!n && !m)break; 17 memset(grid, 0, sizeof(grid)); 18 int s, t, k, T; 19 for(int i = 0; i < m; i++){ 20 scanf("%d%d", &s, &t); 21 grid[s][t] = 1; 22 } 23 memset(dp, 0, sizeof(dp)); 24 for(int k = 0; k < N; k++){ 25 for(int i = 0; i < n; i++){ 26 dp[i][i][0] = 1; 27 for(int j = 0; j < N; j++){ 28 for(int v = 0; v < n; v++){ 29 if(grid[v][j] && k-1 >= 0){ 30 dp[i][j][k] += dp[i][v][k-1]; 31 dp[i][j][k] %= MOD; 32 } 33 } 34 } 35 } 36 } 37 scanf("%d", &T); 38 while(T--){ 39 scanf("%d%d%d", &s, &t, &k); 40 printf("%d\n", dp[s][t][k]); 41 } 42 } 43 44 return 0; 45 }
HDU2157(SummerTrainingDay05-F dp)
标签:std memory 个数 ace 注意 sample 决定 split ott
原文地址:http://www.cnblogs.com/Penn000/p/7291697.html