zoukankan      html  css  js  c++  java
  • 【BZOJ4956】Secret Chamber at Mount Rushmore

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4956


    暂时结束DP的学习,开始图论的复习了,哦,复习,呵呵呵。。。

    这是比较水的一道题,我们只关注从一个点是否有路径可以到达另一个点,而且数据范围又不大,显然是Floyd算法的应用,求传递闭包。

    但是,好好读题,把题目的要求在代码当中体现得淋漓尽致,别问我为什么要说这个。。。

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int maxa = 30, maxn = 55;
     5 
     6 int f[maxa][maxa];
     7 char w1[maxn], w2[maxn];
     8 
     9 int main() {
    10     int m, n;
    11     char a, b;
    12     scanf("%d%d", &m, &n);
    13     for (int i = 1; i <= m; ++i) {
    14         a = getchar();
    15         while (a < 'a' || a > 'z') a = getchar();
    16         b = getchar();
    17         while (b < 'a' || b > 'z') b = getchar();
    18         a = a - 'a' + 1, b = b - 'a' + 1;
    19         f[(int)a][(int)b] = 1;
    20     }
    21     for (int i = 1; i <= 26; ++i) f[i][i] = 1;
    22     for (int k = 1; k <= 26; ++k)
    23         for (int i = 1; i <= 26; ++i)
    24             for (int j = 1; j <= 26; ++j)
    25                 f[i][j] = f[i][j] || (f[i][k] && f[k][j]);
    26     for (int i = 1; i <= n; ++i) {
    27         scanf("%s%s", w1, w2);
    28         int w1l = strlen(w1), w2l = strlen(w2), flag = 1;
    29         if (w1l != w2l) {
    30             printf("no
    ");
    31             continue;
    32         }
    33         for (int j = 0; j < w1l; ++j)
    34             if (!f[(int)w1[j] - 'a' + 1][(int)w2[j] - 'a' + 1]) {
    35                 printf("no
    ");
    36                 flag = 0;
    37                 break;
    38             }
    39         if (flag) printf("yes
    ");
    40     }
    41     return 0;
    42 }
    AC代码
  • 相关阅读:
    常见压缩/解压缩及打包命令
    黑盒测试和白盒测试
    基础命令的操作

    转]DLL-多个进程间共享动态链接库的原理
    Ansi UNICODE,GBK,UTF-8区别
    Cppunit 源码 SynchronizedObject
    二分查找实现
    Androdi 开发学习四 Activity和Intent
    Android开发学习三:adb启动失败
  • 原文地址:https://www.cnblogs.com/Mr94Kevin/p/9899993.html
Copyright © 2011-2022 走看看