萌新求助

P1825 [USACO11OPEN] Corn Maze S

@[qym2008](/user/270120) 哦,你的马蜂和我不像,还是算了
by liqingyang @ 2020-04-19 17:05:24


@[liqingyang](/user/272088) 那我等你AC吧
by xhQYm @ 2020-04-19 17:05:47


。。。。
by Mr_Greeper @ 2020-04-19 17:09:07


救救孩子吧
by Mr_Greeper @ 2020-04-19 17:09:14


@[liqingyang](/user/272088) @[qym2008](/user/270120) 两位大佬找出错误来@我一下,我先去肝作业了
by Mr_Greeper @ 2020-04-19 17:30:00


@[Mr_Greeper](/user/189342) 30分钟AC祭,一遍过,代码: ```cpp #include<iostream> #include<queue> using namespace std; struct point { int x,y,z; }; point make(int x,int y,int z) { point t; t.x=x,t.y=y,t.z=z; return t; } struct word { int x1,y1,x2,y2; }; word x[30]; int dx[4]={-1,1,0,0},dy[4]={0,0,-1,1},n,m,x1,y1; char a[310][310]; bool flag[30],mark[310][310]; queue<point> q; 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]=='@') { x1=i,y1=j; } if(a[i][j]>='A'&&a[i][j]<='Z') { if(!flag[a[i][j]-'A']) { x[a[i][j]-'A'].x1=i,x[a[i][j]-'A'].y1=j; flag[a[i][j]-'A']=1; } else { x[a[i][j]-'A'].x2=i,x[a[i][j]-'A'].y2=j; } } if(a[i][j]=='#') { mark[i][j]=1; } } } q.push(make(x1,y1,0)); while(!q.empty()) { point t=q.front(); q.pop(); for(int i=0;i<4;i++) { int tx=t.x+dx[i],ty=t.y+dy[i]; if(!tx||!ty||tx>n&&ty>m) { continue; } if(a[tx][ty]=='.'&&!mark[tx][ty]) { q.push(make(tx,ty,t.z+1)); mark[tx][ty]=1; } if(a[tx][ty]>='A'&&a[tx][ty]<='Z') { if(tx==x[a[tx][ty]-'A'].x1&&ty==x[a[tx][ty]-'A'].y1) { if(!mark[x[a[tx][ty]-'A'].x2][x[a[tx][ty]-'A'].y2]) { q.push(make(x[a[tx][ty]-'A'].x2,x[a[tx][ty]-'A'].y2,t.z+1)); mark[x[a[tx][ty]-'A'].x2][x[a[tx][ty]-'A'].y2]=1; } } else { if(!mark[x[a[tx][ty]-'A'].x1][x[a[tx][ty]-'A'].y1]) { q.push(make(x[a[tx][ty]-'A'].x1,x[a[tx][ty]-'A'].y1,t.z+1)); mark[x[a[tx][ty]-'A'].x1][x[a[tx][ty]-'A'].y1]=1; } } } if(a[tx][ty]=='=') { cout<<t.z+1<<endl; return 0; } } } return 0; } ```
by liqingyang @ 2020-04-19 17:33:18


上一页 |