• 个人简介

    bfs #include<bits/stdc++.h> using namespace std; int dx[]={1,0,-1,0}; int dy[]={0,-1,0,1}; int n; int sx,sy,ex,ey; int f[102][102]; int vis[102][102]; struct node{ int xx,yy; }; bool bfs(int x,int y){ queueq; q.push({x,y}); vis[x][y]=1; while(q.size()){ node a=q.front(); if(a.xxex&&a.yyey)return 1; q.pop(); for(int i=0;i<4;i++){ int nx=a.xx+dx[i]; int ny=a.yy+dy[i]; if(nx>=1&&ny>=1&&nx<=n&&ny<=n&&f[nx][ny]!=1&&vis[nx][ny]0){ q.push({nx,ny}); vis[nx][ny]=1; } } } return 0; } int main(){ cin>>n; for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ cin>>f[i][j]; } } cin>>sx>>sy>>ex>>ey; if(bfs(sx,sy)1)cout<<"YES"; else cout<<"NO"; return 0; } dfs #include<bits/stdc++.h> using namespace std; int n,m; char a[502][502]; int vis[502][502]; int sx,sy,ex,ey; int flag=0; int dx[]={1,0,-1,0}; int dy[]={0,-1,0,1}; void dfs(int x,int y){ if(xex&&yey){ flag=1; return ; } for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx>=1&&ny>=1&&nx<=n&&ny<=m&&a[nx][ny]!='#'&&vis[nx][ny]!=1){ vis[nx][ny]=1; dfs(nx,ny); } } } int main(){ cin>>n>>m; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]'s')sx=i,sy=j; if(a[i][j]'g')ex=i,ey=j; } } dfs(sx,sy); if(flag==1)cout<<"Yes"; else cout<<"No"; return 0; } 拓扑排序 #include<bits/stdc++.h> using namespace std; long long n,m,rd[1e3+10]; vectorv[1e3+10],ans; int main(){ cin>>n>>m; while(m--){ int x,y; cin>>x>>y; v[x].push_back(y); rd[y]++; } queue q; for(int i=1;i<=n;i++) if(rd[i]==0) q.push(i); while(q.size()){ int x=q.front();q.pop(); ans.push_back(x); for(int i=0;i<v[x].size();i++){ int xx=v[x][i]; if(--rd[xx]==0) q.push(xx); } } if(ans.size()==n) for(int x:ans) cout<<x<<" "; else cout<<"has circle"; return 0; }

  • 通过的题目

  • 最近活动

题目标签

初窥门径
21
顺序结构
21