CodeForces 475B Strongly Connected City[想法]

来源:互联网 发布:华盛顿圣路易斯 知乎 编辑:程序博客网 时间:2024/04/29 13:57

题目链接: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 longint 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;}

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

0 0
原创粉丝点击