給定乙個有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)}}
}}
dfsvoid
dfs(lgraph g,
int v)}}
}
bfsvoid
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 ...