当前位置:实例文章 » 其他实例» [文章]AtcoderABC251场

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

相关标签:算法
其他信息

其他资源

Top