zoukankan      html  css  js  c++  java
  • T84341 Jelly的难题1

    T84341 Jelly的难题1

    题解

    当窝发现窝的锅在读入这个矩阵的时候,窝。。窝。。窝。。

    果然,一遇到和字符串有关的题就开始吹空调

    好啦我们说说思路吧

    BFS队列实现

    拿出一个没有走过的点,扩展它可以达到的节点,那么它可以到达的节点的到达时间就等于它父节点到达时间+1

    代码

    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int mod=19260817;
    int n,m,sx,sy,t;
    long long much;
    char ju[505][505];
    int vis[505][505];
    int dis[505][505];
    
    int dx[4]={-1,0,0,1};
    int dy[4]={0,-1,1,0};
    
    struct node
    {
        int x,y;
    };
    
    queue<node>q;
    
    int main()
    {
        scanf("%d%d
    ",&n,&m);
        memset(vis,-1,sizeof(vis));
        memset(dis,0,sizeof(dis));
        
        for(int i=1;i<=n;i++)
          for(int j=1;j<=m;j++)
          {
              cin>>ju[i][j];  //我的锅就在这里QWQ 
              
              if(ju[i][j]=='*')
              {
                  sx=i;sy=j;
                vis[i][j]=1;    
            }
            if(ju[i][j]=='o')
              vis[i][j]=1;
            if(ju[i][j]=='#')
              vis[i][j]=0;
          }
    
        node h;
        h.x =sx;h.y =sy;
        q.push(h);
      
        while(!q.empty())
        {
            
            node now=q.front();
            q.pop();
            t=max(t,dis[now.x][now.y]);
    
            for(int i=0;i<=3;i++)
            {
                int xx=now.x +dx[i];
                int yy=now.y +dy[i];
                if(vis[xx][yy]==0)
                {
                    dis[xx][yy]=dis[now.x ][now.y ]+1;
                    vis[xx][yy]=1;
                    node h;
                    h.x =xx;
                    h.y =yy;
                    q.push(h);
                }
            }
        }
    
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
            {
                if(dis[i][j]!=0)
                {
                    dis[i][j]=t-dis[i][j]+1;
                much=(much%mod+dis[i][j]%mod)%mod;
              }
                
            }
        
        printf("%d
    ",t);
        printf("%ld
    ",much);
    
        return 0;
    }
  • 相关阅读:
    RollingFileAppender 日志按天记录输出到log文件
    spring boot jar包开机自启
    oracle 日常操作--触发器调试
    转载:java基础-String不可变的好处
    java 代码优化
    nginx部署ssl证书
    修改npm仓库地址
    linux下安装python3
    python一行代码开启http
    linux下安装mongodb
  • 原文地址:https://www.cnblogs.com/xiaoyezi-wink/p/11102846.html
Copyright © 2011-2022 走看看