結果
問題 | No.274 The Wall |
ユーザー |
|
提出日時 | 2017-12-27 16:38:15 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 369 ms / 2,000 ms |
コード長 | 1,226 bytes |
コンパイル時間 | 1,727 ms |
コンパイル使用メモリ | 181,204 KB |
実行使用メモリ | 132,608 KB |
最終ジャッジ日時 | 2024-06-22 02:21:23 |
合計ジャッジ時間 | 3,424 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 22 |
ソースコード
#include <bits/stdc++.h>#define rep(i,n)for(int i=0;i<(n);i++)using namespace std;int l[2000][2],r[2000][2];class Scc{vector<int>vs;vector<bool>used;vector<vector<int>>E,G;public:vector<int>cmp;int n;Scc(int N){n=N;E.resize(n);G.resize(n);cmp.resize(n);}private:void dfs(int v){used[v]=true;for(auto u:E[v]){if(!used[u])dfs(u);}vs.push_back(v);}void rdfs(int v,int k){used[v]=true;cmp[v]=k;for(auto u:G[v]){if(!used[u])rdfs(u,k);}}public:void add_edge(int a,int b){E[a].push_back(b);G[b].push_back(a);}int scc(){used.assign(n,0);vs.clear();for(int v=0;v<n;v++){if(!used[v])dfs(v);}used.assign(n,0);int k=0;for(int i=vs.size()-1;i>=0;i--){if(!used[vs[i]])rdfs(vs[i],k++);}return k;}};int main(){int n,m;scanf("%d%d",&n,&m);rep(i,n){scanf("%d%d",&l[i][0],&r[i][0]);l[i][1]=m-1-r[i][0];r[i][1]=m-1-l[i][0];}Scc scc(n*2);rep(i,n)for(int j=i+1;j<n;j++)rep(k,2)rep(t,2){if(!(r[i][k]<l[j][t]||r[j][t]<l[i][k])){scc.add_edge(i+k*n,j+(!t)*n);scc.add_edge(j+t*n,i+(!k)*n);}}scc.scc();rep(i,n){if(scc.cmp[i]==scc.cmp[i+n]){puts("NO");return 0;}}puts("YES");}