列出連通集 25分 C語言

2021-10-07 16:57:16 字數 1753 閱讀 4887

給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n−1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。

輸入第1行給出2個整數n(0按照""的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。

860

7012

0412

435

int

main()

free

(edge);}

listcomponent

(g,dfs);}

listcomponent

(g,bfs)

;freegraph

(g);

return0;

}

圖的基本操作:圖的建立、邊的插入、釋放圖空間
#define maxvertexnum 10

typedef

int vertex;

int visited[maxvertexnum]

;int queue[maxvertexnum]

;int rear=-1

,head=-1

;typedef

struct enode* ptrtoenode;

struct enode

;typedef ptrtoenode edge;

typedef

struct adjvnode* ptrtoadjvnode;

struct adjvnode

;typedef

struct hnodeadjlist[maxvertexnum]

;typedef

struct graph* lgraph;

struct graph

;lgraph creatgraph

(int n,

int e)

return g;

}void

insertedge

(lgraph g,ptrtoenode e)

else

ptrtoadjvnode adjvnode=

(ptrtoadjvnode)

malloc

(sizeof

(struct adjvnode));

adjvnode->adjv=e->v;

l=g->graphlist[e->w]

.firstadjv;

if(l==

null

||l->adjv>e->v)

else

}void

freegraph

(lgraph g)}}

}}

dfs
void

dfs(lgraph g,

int v)}}

}

bfs
void

bfs(lgraph g,

int v)}}

}}

listcomponent:列出連通集同時控制輸出格式
void

listcomponent

(lgraph g,

void

(*function)

(lgraph,

int)

)\n");

}}

列出連通集 (25 分)

7 39 列出連通集 25 分 給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出b...

PTA 列出連通集 25分

給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入格式 輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。輸入樣例 ...

5 1 列出連通集 25分

5 1 列出連通集 25分 給定乙個有n n個頂點和e e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數nn 0 010 和ee 分別是圖的頂點數和邊數。隨後e ...