description
大家還記得鄰接錶類嗎?沒錯,鄰接表是表示稀疏圖(邊數比較少的圖)的一種很好的資料結構。
現在,我們要求使用深度優先遍歷的思想,利用鄰接錶類,對給定的有向圖,找出從指定結點start出發,長度為m的所有簡單路徑(簡單路徑是頂點序列中頂點不重複出現的路徑)的數量。
為簡化題目,我們還是約定:用正整數1,2,3……n來表示每個結點的id(編號)。(輸入可能有重邊)
input format
第1行:n m start m //正整數n ,代表圖中結點的數量。非負整數m代表要圖中有向邊的數量。start為起點編號,m為題中的簡單路徑長度
第2行到第1+m行: a b //每行兩個整數:代表結點a到結點b有一條有向邊(a->b)
output format
乙個整數k,代表長度為m的所有簡單路徑的數量
sample input1
5 4 1 2
1 22 3
3 44 5
sample output1
1 //從1出發,長度為2的簡單路徑只有一條:1->2->3
sample input2
6 5 1 2
1 22 3
2 42 1
5 6sample output2
2 //從1出發,長度為2的簡單路徑有2條:1->2->3,1->2->4。1->2->1不是,因為不是簡單路徑。
limits
0資料保證合法
(ps:關於簡單路徑的起點終點是否能相同,這個有點爭議。本題規定不能相同)
#include
using
namespace std;
template
<
class
typeofver
,class
typeofedge
>
class
adjlistgraph};
struct vernode }
; vernode* verlist;
intfind
(typeofver v)
const
void
dfs(
int start,
int m,
int& top,
bool visited,
int st,
int& count)
const
;public
:adjlistgraph
(int vsize)
;void
insert
(typeofver x, typeofver y, typeofedge w)
;void
dfs(
int start,
int m)
const;~
adjlistgraph()
;};template
<
class
typeofver
,class
typeofedge
>
adjlistgraph
::adjlistgraph
(int vsize)
template
<
class
typeofver
,class
typeofedge
>
void adjlistgraph
::insert
(typeofver x, typeofver y, typeofedge w)
template
<
class
typeofver
,class
typeofedge
>
void adjlistgraph
::dfs
(int start,
int m)
const
template
<
class
typeofver
,class
typeofedge
>
void adjlistgraph
::dfs
(int start,
int m,
int&top,
bool visited,
int st,
int&count)
const
} visited[start]
=false
;--top;
}template
<
class
typeofver
,class
typeofedge
>
adjlistgraph::~
adjlistgraph()
delete
verlist;
}int
main()
a.dfs
(start, m)
;}
尋找路徑數目
題意 輸入包含多個測試用例輸入0退出測試。吉公尺將每個十字路口或加入的路徑從1開始編號。他的辦公室是編號1,他的房子是編號2。每個測試用例的第一行是十字路口的數量n,1 n 1000,和路徑數量的m。接下來的m行線每個包含路口a b和整數距離1 d 1000000表示的道路長度d。吉公尺可以走任何他...
矩陣中路徑數目問題
在如下8 6的矩陣中,請計算從a移動到b一共有 種走法。要求每次只能向上或向右移動一格,並且不能經過p。8 6的矩陣,從左下角a到右上角b,一共需要走12步,其中5步向上,7步向右,因此總的走法一共有c 12,5 792種,但題目規定不能經過p,因此需要減去經過p點的走法。經過p的路徑分為兩部分,從...
有效的快遞序列數目(簡單遞推)
題目 題意 給你 n 筆訂單,每筆訂單都需要快遞服務。請你統計所有有效的 收件 配送 序列的數目,確保第 i 個物品的配送服務 delivery i 總是在其收件服務 pickup i 之後。由於答案可能很大,請返回答案對 10 9 7 取餘的結果 class solution return ans...