当先锋百科网

首页 1 2 3 4 5 6 7

题目链接:http://codeforces.com/problemset/problem/475/B

题目的意思是,给你n条水平固定流向,和m条竖直固定流向的街道,他们互相交叉在一起。。问任意交叉点能不能互相到达。。如下图:


在这里,我们知道,每条路的流向都是已知的。。

那么我们只需要判断外环路能否成环就可以了。。

如果外环路可以成环,那么的话,任意两点就可以到达。否则的话,就不能够。

为什么这么说呢??

因为如果外环路成环了,那么,任意点就可以先走到外环路上,然后,再走到你想要的其他的节点上。。这一点是一定可以的。。

那么怎么判断外环路成环呢?判断四角可达即可。。

Code:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
using namespace std;
#define INT unsigned long long

int main()
{
    int n, m;
    cin >> n >> m;
    string h, v;
    cin >> h >> v;
    bool flag = true;
    if(h[0] == '>' && v[0] == 'v') flag = false;
    if(h[0] == '<' && v[m - 1] == 'v') flag = false;
    if(h[n - 1] == '>' && v[0] == '^') flag = false;
    if(h[n - 1] == '<' && v[m - 1] == '^') flag = false;
//    if(v[0] == v[m - 1]) flag = false;
    if(flag) puts("YES");
    else puts("NO");
    return 0;
}

一个好的想法是非常的重要的!!