• CodeChef Strongly Connected City解题报告


    题面

    用n条水平街道横贯m条垂直街道,构成一个(n - 1)×(m - 1)网格。为了增加交通流量,市长决定把每条街都改为单行道。这意味着在每条水平街道上,交通只从西向东移动或只从东向西移动。此外,在每条垂直街道上,交通只从北到南或只从南到北移动。在十字路口,可以从一条垂直的街道进入一条水平的街道,反之亦然。

    市长收到了一些街道方向图。你的任务是检查在建议的街道方向模式中,是否有可能从任何其他路口到达任何路口。

    输入

    第一行输入包含两个整数n和m(2≤n, m≤20),表示水平街道数和垂直街道数。

    第二行包含一个长度为n的字符串,由字符'<'和'>'组成,表示每条水平街道的方向。如果第i个字符等于'<',则街道由东向西,否则街道由西向东。街道是按从北到南的顺序排列的。

    第三行包含一个长度为m的字符串,由字符''和'v'组成,表示每条垂直街道的方向。如果第i个字符等于'',则街道从南到北,否则街道从北到南。街道是按从西到东的顺序排列的。

    输出

    如果给定的模式符合市长的标准,则打印包含“YES”的单行,否则打印包含“NO”的单行。

    example:
    Input
    3 3

    <>
    v^v
    Output
    NO
    Input
    4 6
    <><>
    vvv^
    Output
    YES

    题解

    看了题解之后发现这个题实在水的没边了
    对于四角的每个顶点,例如左上角的点,若横向为>,纵向为V,则没有路可以到达这个点
    然后对于四个顶点都特判一下就直接做完了???
    可能有人问如果四角可以通那怎么保证内部也是通的呢?
    事实上,四角通了,四边通了,内部自然成环自然通,具体地可以自己造一组数据手玩一下
    关键还是四个顶点的特判昂。

    代码

    #include <cstdio>
    #include <cstring>
    using namespace std;
    int n,m;
    char h[25],v[25];
    bool flag;
    int main(){
        scanf("%d%d",&n,&m);
        scanf("%s%s",h,v);
        if(h[0]=='>'&&v[0]=='v') flag=true;
        if(h[0]=='<'&&v[m-1]=='v') flag=true;
        if(h[n-1]=='>'&&v[0]=='^') flag=true;
        if(h[n-1]=='<'&&v[m-1]=='^') flag=true;
        if(flag) puts("NO");
        else puts("YES");
        return 0;
    }
    
    
  • 相关阅读:
    select、poll和epoll
    Linux 常用命令之文件和目录
    SmartPlant Review 帮助文档机翻做培训手册
    SmartPlant Foundation 基础教程 3.4 菜单栏
    SmartPlant Foundation 基础教程 3.3 标题栏
    SmartPlant Foundation 基础教程 3.2 界面布局
    SmartPlant Foundation 基础教程 3.1 DTC登陆界面
    SmartPlant Foundation 基础教程 1.4 SPF架构
    SmartPlant Foundation 基础教程 1.3 SPF其他功能
    SmartPlant Foundation 基础教程 1.2 SPF集成设计功能
  • 原文地址:https://www.cnblogs.com/cancers/p/11283970.html
Copyright © 2020-2023  润新知