結果
問題 |
No.2910 単体ホモロジー入門
|
ユーザー |
👑 |
提出日時 | 2023-09-08 15:42:51 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 72 ms / 2,000 ms |
コード長 | 1,647 bytes |
コンパイル時間 | 1,941 ms |
コンパイル使用メモリ | 198,988 KB |
最終ジャッジ日時 | 2025-02-16 19:25:21 |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 47 |
ソースコード
#include <bits/stdc++.h> using namespace std; int main() { int N; cin >> N; int M; cin >> M; constexpr int bound_M = 6; int ij[bound_M][2]; for( int m = 0 ; m < M ; m++ ){ cin >> ij[m][0] >> ij[m][1]; } set<int> vertex_exception{}; for( int i = 0 ; i < 3 ; i++ ){ int v; cin >> v; vertex_exception.insert( v ); } for( int m0 = 0 ; m0 < M ; m0++ ){ for( int m1 = 0 ; m1 < M ; m1++ ){ if( m0 == m1 ){ continue; } int count1 = 0; int start0; int end0; int end1; for( int s = 0 ; s < 2 ; s++ ){ for( int t = 0 ; t < 2 ; t++ ){ if( ij[m0][s] == ij[m1][t] ){ count1++; start0 = ij[m0][1-s]; end0 = ij[m0][s]; end1 = ij[m1][1-t]; } } } if( count1 != 1 ){ continue; } for( int m2 = 0 ; m2 < M ; m2++ ){ if( m0 == m2 || m1 == m2 ){ continue; } int count2 = 0; int end2; for( int t = 0 ; t < 2 ; t++ ){ if( end1 == ij[m2][t] ){ count2++; end2 = ij[m2][1-t]; } } if( count2 != 1 ){ continue; } if( end2 == start0 ){ set<int> vertex{ end0 , end1 , end2 }; if( vertex != vertex_exception ){ cout << "Yes\n"; return 0; } continue; } for( int m3 = 0 ; m3 < M ; m3++ ){ if( m0 == m3 || m1 == m3 || m2 == m3 ){ continue; } int count3 = 0; int end3; for( int t = 0 ; t < 2 ; t++ ){ if( end2 == ij[m3][t] ){ count3++; end3 = ij[m3][1-t]; } } if( count3 != 1 ){ continue; } if( end3 != start0 || end3 == end0 ){ continue; } cout << "Yes\n"; return 0; } } } } cout << "No\n"; return 0; }