/ Vijos / 讨论 / 问答 /

感染而刚刚

要死

10 条评论

  • @ 2019-05-26 22:33:48
  • @ 2019-05-20 16:41:08

    微信:twd_22

  • @ 2019-05-20 16:40:39

    QQ:459834574

  • @ 2019-05-20 16:39:20

    思加学堂QQ:940444476

  • @ 2019-05-20 16:38:45

    QQ:2491037413

  • @ 2019-05-20 16:38:24

    aolaxin:240096404

  • @ 2019-05-20 16:38:09

    vijos:248452688

  • @ 2019-05-20 16:35:06

    //魔兽世界
    #include<iostream>
    #include<cstdio>
    int d[4][2]={{-1,0},{0,-1},{0,1},{1,0}};
    char vis[101][101],map[101][101];
    int n,m,q[20001][2],dist[101][101],g[30][4];
    void bfs(){
    int t,x0,y0,x,y;
    q[0][0]=q[0][1]=1;
    vis[1][1]=1;
    dist[1][1]=0;
    for(int l=0,r=1;l<r;l++){
    x0=q[l][0];
    y0=q[l][1];
    for(int i=0;i<4;i++){
    x=x0+d[i][0];
    y=y0+d[i][1];
    if(map[x][y]){
    t=map[x][y];
    if(t>1){
    if(g[t][0]==x&&g[t][1]==y){
    x=g[t][2];
    y=g[t][3];
    }else{
    x=g[t][0];
    y=g[t][1];
    }
    }
    if(vis[x][y])continue;
    dist[x][y]=dist[x0][y0]+1;
    q[r][0]=x;
    q[r][1]=y;
    vis[x][y]=1;
    r++;
    }
    }
    }
    }
    int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
    scanf("%s",&map[i][1]);
    for(int j=1;map[i][j];j++)
    if(map[i][j]<60)map[i][j]=49-map[i][j];
    else{
    map[i][j]-=63;
    int t=map[i][j];
    if(g[t][0]==0){
    g[t][0]=i;
    g[t][1]=j;
    }else{
    g[t][2]=i;
    g[t][3]=j;
    }
    }
    }
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    dist[i][j]=2147483647;
    bfs();
    if(dist[n][m]==2147483647)printf("No Solution.");
    else printf("%d",dist[n][m]);
    return 0;
    }

  • @ 2019-05-20 16:29:11

    ssjj:**1994174017**

  • @ 2019-05-20 16:28:06

    luogu.org

  • 1