public class NfsTu {
public static void main(String[] args) {
int [] quene=new int[36]; //用于盛放访问过的节点
int start=1; //指向队列中的第一个节点
int end=2; //指定最后一个节点的下一个位置
int flag=1; //记录访问的次数
int n,m;
int cur=1;//当前的点
quene[start]=1;
Scanner in=new Scanner(System.in);
System.out.println("请输入点的个数");
int sum=in.nextInt();
int x=sum;
int y=sum;
int map[][]=new int[x+1][y+1];
for (int i=1;i<=x;i++){
for (int j=1;j<=y;j++){
map[i][j]=0;//先初始化图,让每一个位置上的数为0
}
}
System.out.println("请输入图:");
for (int i=1;i<=x;i++){
m=in.nextInt();
n=in.nextInt();
map[m][n]=1; //输入图
}
int book[] =new int[sum+1]; //用来标记是否访问
for (int i=1;i<sum+1;i++){
book[i]=0;//表示还没有访问过
}
System.out.println("广度优先遍历的结果是:");
System.out.print(1+" ");//先将第一个节点输出
//表示都访问完了
while (flag!=5){
for (int i=1;i<=sum;i++){
if (map[cur][i]==1&&book[i]==0){ //这个点,没有访问过
flag++;
System.out.print(i+" ");
quene[end]=i;
end++;
}
}
start++;
cur=quene[start];
}
}
}
运行结果: