結果
問題 |
No.408 五輪ピック
|
ユーザー |
|
提出日時 | 2025-04-19 00:02:12 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 109 ms / 5,000 ms |
コード長 | 1,320 bytes |
コンパイル時間 | 2,003 ms |
コンパイル使用メモリ | 196,620 KB |
実行使用メモリ | 10,192 KB |
最終ジャッジ日時 | 2025-04-19 00:02:16 |
合計ジャッジ時間 | 4,164 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 32 |
ソースコード
# include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; // # define int long long # define lc u << 1 # define rc u << 1 | 1 # define fi first # define se second # define endl "\n" const int N = 200005; int n, m, u, v; struct Edge { int u, v; } E[N]; bool tag[N]; vector <int> e[N]; signed main () { // freopen ("circle.in", "r", stdin); freopen ("circle.out", "w", stdout); ios::sync_with_stdio (0); cin.tie (0); cout.tie (0); cin >> n >> m; for (int i = 1; i <= m; i ++ ) { int u, v; cin >> u >> v; E[i] = {u, v}; if (u == 1) tag[v] = true; if (v == 1) tag[u] = true; } for (int i = 1; i <= m; i ++ ) { int u = E[i].u, v = E[i].v; if (tag[u] && v!=1) e[v].push_back(u); if (tag[v] && u!=1) e[u].push_back(v); } for (int i = 1; i <= m; i ++ ) { bitset <20005> check1, check2, temp; int u = E[i].u, v = E[i].v; if (u == 1 || v == 1) continue; for (auto k : e[u]) { if (k == u || k == v || k==1) continue; check1[k] = 1; } for (auto k : e[v]) { if (k == u || k == v || k==1) continue; check2[k] = 1; } if (check1.count() == 0 || check2.count() == 0) continue; temp = (check1 | check2); if (temp.count() >= 2) { cout << "YES" << '\n'; return 0; } } cout << "NO" << '\n'; return 0; }