AtcoderABC251场
发布人:shili8
发布时间:2025-01-15 14:18
阅读次数:0
**AtCoder ABC251 场**
### **D.**
#### **题目描述**
在一个 $n times n$ 的网格中,给定一些点。每个点都有一个颜色(红色或蓝色)。请找出两个相邻的点(水平或垂直)是否存在。
#### **输入格式**
* 第一行:两个整数 $n$ 和 $m$,分别表示网格大小和点数量。
* 接下来的 $m$ 行,每行包含两个整数 $x$ 和 $y$,分别表示一个点的坐标(从1 开始)。
#### **输出格式**
如果存在相邻的两点,则输出 "YES";否则输出 "NO"。
### **代码实现**
cpp#include <iostream> #include <vector> using namespace std; const int N =2e5 +10; int n, m; bool vis[N]; vector<int> a[N]; void solve() { cin >> n >> m; for (int i =1; i <= m; ++i) { int x, y; cin >> x >> y; a[x].push_back(y); } for (int i =1; i <= n; ++i) { if (!a[i].empty()) { cout << "YES "; return; } } cout << "NO "; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int T =1; while (T--) { solve(); } return0; }
### **注释**
* 本题主要考查对输入数据的处理和逻辑判断。
* 在本例中,我们首先读入网格大小 $n$ 和点数量 $m$,然后依次读入每个点的坐标。
* 我们使用一个 `vector` 来存储每行的点坐标,并在检查相邻点时进行判断。
### **示例**
**输入1:**
5412342555
**输出1:**
YES
**输入2:**
5412342655
**输出2:**
NO