結果
| 問題 | No.629 グラフの中に眠る門松列 | 
| コンテスト | |
| ユーザー |  reitetsuoh@gmail.com | 
| 提出日時 | 2018-05-15 13:49:13 | 
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 131 ms / 4,000 ms | 
| コード長 | 873 bytes | 
| コンパイル時間 | 835 ms | 
| コンパイル使用メモリ | 72,940 KB | 
| 実行使用メモリ | 6,948 KB | 
| 最終ジャッジ日時 | 2024-06-28 12:06:15 | 
| 合計ジャッジ時間 | 2,065 ms | 
| ジャッジサーバーID (参考情報) | judge5 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 6 | 
| other | AC * 36 | 
ソースコード
#include <iostream>
#include <vector>
using namespace std;
struct NODE{
	int id;
	vector<int> link;
	NODE(){
		id=0;
		link.clear();
	}
	void AddLine(int _id){
		link.push_back(_id);
	}
	bool Check(){
		if (link.size()<=1){
			return false;
		}
		int i,j;
		for (i=0;i<link.size()-1;i++){
			for (j=i+1;j<link.size();j++){
				int id1=link[i];
				int id2=link[j];
				if (id1!=id2 && (id1<id && id2<id || id1>id &&id2>id)){
					return true;
				}
			}
		}
		return false;
	}
};
int main(int argc, char* argv[])
{
	int N,M;
	cin>>N>>M;
	vector<NODE> a(N+1);
	int i;
	int ID;
	for (i=1;i<=N;i++){
		cin>>ID;
		a[i].id=ID;
	}
	int u,v;
	for (i=1;i<=M;i++){
		cin>>u>>v;
		a[u].AddLine(a[v].id);
		a[v].AddLine(a[u].id);
		if (a[u].Check()){
			cout<<"YES"<<endl;
			return 0;
		}
		if (a[v].Check()){
			cout<<"YES"<<endl;
			return 0;
		}
	}
	cout<<"NO"<<endl;
	return 0;
}
            
            
            
        