結果
問題 | No.274 The Wall |
ユーザー |
![]() |
提出日時 | 2018-11-05 22:11:15 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 338 ms / 2,000 ms |
コード長 | 1,707 bytes |
コンパイル時間 | 2,369 ms |
コンパイル使用メモリ | 209,620 KB |
最終ジャッジ日時 | 2025-01-06 15:35:53 |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 22 |
ソースコード
#include <bits/stdc++.h>using namespace std;using i64 = int64_t;using vi = vector<i64>;using vvi = vector<vi>;int main() {int n, m;cin >> n >> m;vvi adj(n * 2);using ii = pair<int, int>;vector<ii> lr;for (int i = 0; i < n; i++) {int l, r;cin >> l >> r;lr.push_back(ii(l, r));adj[i].push_back(i + n);adj[i + n].push_back(i);}for (int i = 0; i < n; i++) {for (int j = i + 1; j < n; j++) {ii a = lr[i], b = lr[j];if (a > b) swap(a, b);if (b.first <= a.second) {adj[i].push_back(j);adj[j].push_back(i);adj[i + n].push_back(j + n);adj[j + n].push_back(i + n);}b = ii(m - 1 - b.second, m - 1 - b.first);if (a > b) swap(a, b);if (b.first <= a.second) {adj[i + n].push_back(j);adj[j].push_back(i + n);adj[i].push_back(j + n);adj[j + n].push_back(i);}}}int ok = 1;vi color(2 * n, -1);unordered_set<int> unvisited;for (int i = 0; i < 2 * n; i++) {unvisited.insert(i);}function<void(int, int)> dfs = [&](int v, int c) {if (color[v] == -1) {unvisited.erase(v);color[v] = c;for (int s: adj[v]) {dfs(s, !c);}} else {if (color[v] != c) {ok = 0;}}};while (unvisited.size()) {int t = *unvisited.begin();dfs(t, 0);}cout << (ok ? "YES" : "NO") << endl;}