圖的廣度優先遍歷鄰接矩陣
阿新 • • 發佈:2019-01-10
#include <iostream> using namespace std; const int INF = 9999; int main() { int i,j,n,m,a,b,cur,book[101] = {0},e[101][101]; int qu[101],tail,head; cin>>n>>m; //初始化二維矩陣 for(i = 1;i <= n;i++) { for(j = 1;j <= n;j++) { if(i == j) { e[i][j] = 0; } else { e[i][j] = INF; } } } //讀入頂點之間的邊 for(i = 1;i <= m;i++) { cin>>a>>b; e[a][b] = 1; e[b][a] = 1; } //佇列初始化 head = 1; tail = 1; //從1號頂點出發,將1號佇列加入佇列 qu[tail] = 1; tail++; book[1] = 1; //當佇列不為空的時候迴圈 while(head < tail) { cur = qu[head]; for(i = 1;i <= n;i++) { if(e[cur][i] == 1 && book[i] == 0) { qu[tail] = i; tail++; book[i] = 1; } } //如果tail大於n,則表明所有的頂點已經被訪問過了 if(tail > n) { break; } head++; } for(i = 1;i < tail;i++) { cout<<qu[i]<<" "; } cout<<endl; return 0; }