제출 #1136736

#제출 시각아이디문제언어결과실행 시간메모리
1136736fzyzzz_zPort Facility (JOI17_port_facility)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);

  int n; 
  cin >> n; 
  vector<pair<int, int>> a(n); 
  for (int i = 0; i < n; ++i) {
    cin >> a[i].first >> a[i].second; 
  }

  vector<vector<int>> g(n); 
  for (int i = 0; i < n; ++i) {
    for (int j = i + 1; j < n; ++j) {
      auto [x1, y1] = a[i]; 
      auto [x2, y2] = a[j]; 
      if (x1 > x2) {
        swap(x1, x2); 
        swap(y1, y2); 
      }
      if (x2 < y1 && y1 < y2) {
        g[i].push_back(j); 
        g[j].push_back(i); 
      }
    }
  }

  vector<int> vis(n, 0); 
  int ans = 0, ok = 1; 

  function<void(int, int)> dfs = [&] (int x, int p) {
    vis[x] = 1; 
    for (auto y: g[x]) {
      if (vis[y] && y != p) {
        ok = 0; 
        return; 
      }
      if (!vis[y]) {
        dfs(y, x); 
      }
    }
  }; 

  for (int i = 0; i < n; ++i) {
    if (!vis[i]) {
      dfs(i, -1); 
      ans++; 
    }
  }

  for (int i = 0; i < ans; ++i) {
    ok = (ok + ok) % 1000000007; 
  }

  cout << ok << '\n'; 

  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...