SJTU簡單路徑數目

2021-10-06 21:54:09 字數 2515 閱讀 3516

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...