SPOJ KFSTB -帮助总司令:错误答案
SPOJ KFSTB - Help the Commander in Chief: Wrong Answer
问题语句要求找出有向无环图中给定的源节点到目标节点的路径数。
我正在尝试使用dfs与dp进行优化来实现这一点。我已经尝试了几个小的测试用例,代码似乎工作得很好。我认为问题在于大型测试用例,但我不知道如何对它们进行测试。由于路径的数量可能很大,我们要使用取模。我的代码如下:
#include<iostream>
#include<vector>
#define MOD 1000000007
using namespace std;
typedef vector<long long int> vi;
typedef vector<vi> vii;
vii graph;
vi memo;
long long int dfs(int u, int t)
{
if(u==t)
return 1;
if((memo[u]%MOD)>0)
return memo[u]%MOD;
for(int i=0;i<(int)graph[u].size();i++)
{
long long int count = (dfs(graph[u][i], t))%MOD;
memo[graph[u][i]] = (memo[graph[u][i]]%MOD + count%MOD)%MOD;
cur_count = (cur_count%MOD + count%MOD)%MOD;
}
return cur_count%MOD;
}
int main()
{
int d, c, b , s, t, i, a1, a2;
cin>>d;
while(d--)
{
cin>>c>>b>>s>>t;
graph.assign(c+1,vi());
for(i=1;i<=b;i++)
{
cin>>a1>>a2;
graph[a1].push_back(a2);
}
memo.assign(c+1, 0);
memo[s] = dfs(s, t)%MOD;
cout<<memo[s]<<endl;
}
return 0;
}
函数dfs中:元素"i"的数组memo[]用于记忆,以记住从"i"节点到目的地的可能路径数。count变量获取正在访问的当前节点的路径数,即"i" and cur_count获取与节点"u"直接相连的所有节点的总路径
如果你能给我一些建议就太好了。
原始问题的链接在这里:http://www.spoj.com/problems/KFSTB/
如果你想要一些"窍门",这里有一些:
- 关键词:DAG
- 无自循环/多重边缘情况 这次不是关于I/O格式(空格,换行等)
- 为每个测试用例重新初始化!(特别是对于STL的东西,比如vector<>)
- 长长的
- 向后思考:从目的地到起点
如果你仍然卡住,要求更多:)
相关文章:
- 递归求和任务的错误答案
- 为什么我在代码厨师的 CMPRSS 问题中得到 WA(错误答案)?
- 请找出我的代码中的错误,它在提交得到错误答案的同时仍然适用于我的所有测试用例
- 寻找最小楼梯成本的动态规划问题的错误答案
- 为什么可变大小的数组会导致Codechef出现错误答案
- 如何修复此代码对几个测试用例的错误答案?
- 使用幂函数的计算给出了大数字的错误答案
- 快速排序算法,一些特定输入序列的错误答案和分段错误
- 二分法程序的错误答案(C++)
- 无法理解绘图程序中的错误答案
- C++ - 整数除以整数返回错误答案
- 布尔函数的错误答案
- SPOJ FASTFLOW上的错误答案
- 代码的错误答案是在Java Camel案件和C 下划线标识符之间转换的错误答案
- 200万以下所有素数的总和,线程给出错误答案
- 0-1整数背包返回错误答案(动态编程)
- UVa 在线判断 - 3n + 1 - 错误答案
- 提升C++原始算法错误答案
- 二项式系数函数C++错误答案 n>13
- 需要帮助以避免 SPOJ 上的"错误答案"