結果
| 問題 |
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;
}