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

