屠桢 • 10个月前
一个“很有用”的C++bfs代码(建议在c++中打开) 非常建议初学者哦!!! IT's very good for new sb; #include <bits/stdc++.h> using namespace std; struct way{
int x,y;
}; way vis[105][105],a[105],dir[4][2]={{-1,0},{1,0},{0,1},{0,-1}}; int n,k,r,ans,f; void bfs(int n1,int n2){
int book[105][105]={0};
queue<way> q;
q.push(a[n1].x,a[n1].y);
book[a[n1].x][a[n1].y]=1;
while(!q.empty()){
way tmp=q.front();
q.pop();
if(tmp.x==a[n2].x&&tmp.y==a[n2].y){
f=1;
break;
}else{
for(int i=0;i<4;i++){
int xx=tmp.x+dir[i][0],yy=tmp.y+dir[i][1];
way pp;
pp.x=xx,pp.y=yy;
if(xx>0&&xx<=n&&yy>0&&yy<=n&&book[xx][yy]==0&&vis[tmp.x][tmp.y]!=pp){
book[xx][yy]=1;
q.push(xx,yy);
}
}
}
}
} int main(){
cin>>n>>k>>r;
for(int i=1;i<=r;i++){
int r1,r2,r3,r4;
cin>>r1>>r2>>r3>>r4;
way p1,p2;
p1.x=r1,p1.y=r2;
p2.x=r3,p2.y=r4;
vis[r1][r2]=p2;
vis[r3][r4]=p1;
}
for(int i=1;i<=k;i++){
cin>>a[i].x>>a[i].y;
}
for(int i=1;i<k;i++){
for(int j=i+1;j<=k;j++){
f=0;
bfs(i,j);
if(!f) ans++;
}
}
cout<<ans;
return 0;
}
评论: