結果
問題 | No.483 マッチ並べ |
ユーザー |
![]() |
提出日時 | 2017-02-10 23:56:22 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 1,133 bytes |
コンパイル時間 | 567 ms |
コンパイル使用メモリ | 61,684 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-12-29 11:23:37 |
合計ジャッジ時間 | 2,035 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 53 |
ソースコード
#include <iostream>#include <utility>#include <vector>using namespace std;int n;vector<pair<int, int>> edges[111][111];int visited[111][111];int dfs(int r, int c, int prer = -1, int prec = -1) {if (visited[r][c] == 2) {return 0;} else if (visited[r][c] == 1) {return 1;}visited[r][c] = 1;int res = 0;for (auto& edge : edges[r][c]) {int tor = edge.first, toc = edge.second;if (prer == tor && prec == toc) continue;res += dfs(tor, toc, r, c);}visited[r][c] = 2;return res;}int main() {cin >> n;for (int i = 0; i < n; i++) {int r0, c0, r1, c1;cin >> r0 >> c0 >> r1 >> c1;edges[r0][c0].emplace_back(r1, c1);edges[r1][c1].emplace_back(r0, c0);}for (int i = 0; i < 101; i++) {for (int j = 0; j < 101; j++) {if (!visited[i][j]) {int res = dfs(i, j);if (res > 1) {cout << "NO" << endl;return 0;}}}}cout << "YES" << endl;}