有向图路径求解

[img]http://dl.iteye.com/upload/attachment/0069/9953/0be4fc94-5584-3c45-b340-07353e5a52c9.jpg[/img]
要求:输入
{{A,B}, {A,C}, {B,D}, {D,C}, {C,B}},A,B,C,D等都表示一个站点。{A,B}表示从A可以到B,{A,C}表示从A可以到C,以此类推,如上图所示。
结果:
1,输入{A,D},要求输出{A,B,D}(基于上图)
2,输入{B,A},则输入无法找到路径

麻烦大家帮忙看看吧,或者给点思路,万分感谢大家了。

深度优先伪代码,先遍历找到路径 把路径的节点存到栈里,再pop出来输出

[code="java"]bool arriveEnd(node src, node dest) {
for(every node i pointed by src) {
if(i == dest) {
push(i) to stack;
return true;
} else if(arriveEnd(i, dest)) {
push(i) to stack;
return true;
}
return false;
}
}
void print () {
if(arriveEnd(src,dest))
print stack.pop();
}
[/code]

数据结构-〉图论
如果是找最短路径可以用Dijkstra算法