图的按录入顺序广度优先搜索
·
#include<bits/stdc++.h>
int a[100][100];
int n;
char dd[100];
int v[100]={0};
int que[100];
char start;
void f(int head,int w){
while(head<w){
for(int i=0;i<n;i++){
if(v[i]!=1&&a[que[head]][i]!=0){
v[i]=1;
que[w++]=i;
}
}
printf("%c",dd[que[head]]);
head++;
}
}
int main (){
int head=0;
int w=0,t;
scanf("%d",&n);
scanf("%s",dd);
for(int i=0;i<n;i++)
{
for(int k=0;k<n;k++){
scanf("%d",&a[i][k]);
}
}
while(getchar() != '\n');
scanf("%c", &start);
for(int i=0;i<n;i++){
if(dd[i]==start)
{
t=i;
break;
}
}
v[t]=1;
que[w++]=t;
f(head,w);
return 0;
}
更多推荐



所有评论(0)