傳送門
題目描述:
給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n−1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。
輸入格式:
輸入第1行給出2個整數n(0輸出格式:
按照""的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。
輸入樣例:
8 60 7
0 12 0
4 12 4
3 5輸出樣例:
樣例示意圖:
解題思路:
dfs和bfs相關知識點的考察,bfs的實現需要用到佇列這一資料結構,為了**簡便,我們不妨呼叫c++庫函式queue直接完成相關操作。
#include
#include
#define maxsize 11
#define inf 0x3f3f3f3f
int n,e;
int g[11]
[11];
int visited[11]
;typedef
struct
seq,
*seq;
void
init
(seq q)
intisempty
(seq q)
intisfull
(seq q)
intpush
(seq q,
int x)
}int
pop(seq q)
}int
getfront
(seq q)
void
dfs(
int id)
}void
bfs(
int id)}}
}int
main()
for(i=
0;i)\n");
}}memset
(visited,0,
sizeof
(visited));
for(i=
0;i)\n");
}}return0;
}
#include
#include
#include
#include
#define max 11
#define inf 0x3f3f3f3f
using
namespace std;
int n,e;
int visited[max]
;int map[max]
[max]
;void
dfs(
int id)
}void
bfs(
int id)}}
}int
main()
for(i=
0;i)\n");
}}memset
(visited,0,
sizeof
(visited));
for(i=
0;i)\n");
}}return0;
}
7 6 列出連通集
給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。8 6 0 70 1...
7 6 列出連通集
給定乙個有n個頂點和e條邊的無向圖,請用dfs和bfs分別列出其所有的連通集。假設頂點從0到n 1編號。進行搜尋時,假設我們總是從編號最小的頂點出發,按編號遞增的順序訪問鄰接點。輸入第1行給出2個整數n 0按照 的格式,每行輸出乙個連通集。先輸出dfs的結果,再輸出bfs的結果。8 6 0 70 1...
7 6 列出連通集 (25 分)
題目鏈結 這個題一開始沒仔細看結果,就覺得是乙個並查集,寫出來之後只能過乙個點,然後才仔細去看了看樣例,結果發現其實陽曆都過不去,也不知道最後乙個點怎麼過的 這個題就是按照他說的來,乙個深搜乙個廣搜。include include include include using namespace st...