zoukankan      html  css  js  c++  java
  • 洛谷 U138573 序章&第一章 黑暗时代(eviltime)

    洛谷 U138573 序章&第一章 黑暗时代(eviltime)

    洛谷传送门

    题目背景

    “博士,你醒了。”

    “抓住我的手”

    “你还能回忆起自己的名字吗”

    “不能吗……这样啊……”

    ![image-20201031083806861](file:///C:/%5CUsers%5CQYB%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20201031083806861.png)

    “欢迎回来,Dr.不能”

    “欢迎回来,Dr.qwq”

    题目描述

    游戏中,玩家扮演的是一个因故失忆的博士(刀客塔)。

    你被困在了敌人曾经的老巢——切尔诺伯格,而现在的任务则是逃出来,回到你属于的罗德岛

    切城的道路错综复杂,大体形成了一个网状的结构。

    每两条路的交叉点叫做一个节点,而所有的边交叉在一起便形成了一个 n * mnm矩阵

    而现在,在天灾的作用下,每秒钟都会有节点被摧毁。节点被摧毁后将会无法通行。

    为了更高效地撤离,随行的术士算出了每个节点将要被摧毁的时间。Amiya告诉你,你曾是泰拉世界在研究矿石病方面最权威的专家——你也曾多次带着自己的小队突破那一道道看似不可能突破的难关……

    而这一次,你能成功吗?

    输入格式

    第一行两个整数NN MM表示切城的道路大体上可以描述成一个NMNM*的矩阵

    接下来NN行,每行MM个整数,表示节点会在第a_{i,j}a**i,j分钟被摧毁

    特别地,若当前节点的值为0,则代表它早已被摧毁。

    输出格式

    一行,小队通过的最短时间。若无法通过,输出“N0”(不包含引号)。


    题解:

    SB题,SB人,超级SB出题人

    经典宽搜。

    坑点很多,包括但不完全是:

    N0而非No。

    代码:

    #include<cstdio>
    #include<queue>
    #define int long long
    using namespace std;
    char *p1,*p2,buf[100000];
    #define nc() getchar()
    int read()
    {
    	int x=0,f=1;
    	char ch=nc();
    	while(ch<48||ch>57)
    		if(ch=='-')
    			f=-1,ch=nc();
    	while(ch>=48&&ch<=57)
    		x=x*10+ch-48,ch=nc();
    	return x*f;
    }
    const int maxn=1e4+10;
    const int maxm=1010;
    int n,m;
    int a[maxn][maxm];
    bool vis[maxn][maxm];
    int dx[]={0,0,0,-1,1};
    int dy[]={0,1,-1,0,0};
    struct node
    {
    	int x,y,d;
    };
    queue<node> q;
    signed main()
    {
    	scanf("%lld%lld",&n,&m);
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=m;j++)
    			scanf("%lld",&a[i][j]);
    	if(a[n][m]<=0)
    	{
    		puts("N0");
    		return 0;
    	}
    	node b;
    	b.x=n;b.y=m;b.d=0;vis[n][m]=1;
    	q.push(b);
    	while(!q.empty())
    	{
    		node u=q.front();
    		q.pop();
    		if(u.x==1 && u.y==1)
    		{
    			printf("%lld
    ",u.d);
    			return 0;
    		}
    		node v;
    		for(int i=1;i<=4;i++)
    		{
    			int xx=u.x+dx[i];
    			int yy=u.y+dy[i];
    			int dd=u.d+1;
    			if(xx<1 || yy<1 || xx>n || yy>m || vis[xx][yy] || dd>=a[xx][yy])
    				continue;
    			v.x=xx;
    			v.y=yy;
    			v.d=dd;
    			q.push(v);
    			vis[xx][yy]=1;
    		}
    	}
    	puts("N0");
    	return 0;
    }
    
  • 相关阅读:
    谷歌开源计划
    windows XP/vista/win 7 开机登录密码破解大全
    QQ好友空间加密没有密码但我们又很想看怎么办?(QQ空间瞬间破解+相册破解)
    VMware Workstation 7.1.4385536官方正式版+完美汉化包+注册码
    win7/xp笔记本建立wifi热点 用手机连接上网
    Cisco路由器OSPF协议经典学习笔记
    宽带连接错误的处理办法691、623、678、645、720、721、718、734、769、619、676、815
    CCNA的综合实验2
    交换机故障的一般分类和排障步骤
    cisco_iso命名规则
  • 原文地址:https://www.cnblogs.com/fusiwei/p/13963907.html
Copyright © 2011-2022 走看看