제출 #166994

#제출 시각아이디문제언어결과실행 시간메모리
166994Atill83Port Facility (JOI17_port_facility)C++14
22 / 100
63 ms16632 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define endl '\n' using namespace std; const long long INF = (long long) 1e18; const int mod = (int) 1e9+7; const int MAXN = (int) 2e3+5; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<ll,ll> pll; ll n; pii dis[MAXN]; vector<int> adj[MAXN]; int visited[MAXN]; int dfs(int a, int par = -1){ bool ans = 1; for(int i: adj[a]){ if(i == par) continue; if(visited[i] == visited[a]){ return 0; } if(visited[i] != 0) continue; visited[i] = (visited[a] == 1 ? 2 : 1); ans &= dfs(i, a); } return ans; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr);cout.tie(nullptr); #ifdef Local freopen("../IO/int.txt","r",stdin); freopen("../IO/out.txt","w",stdout); #endif cin>>n; for(int i = 1; i <= n; i++){ cin>>dis[i].ff>>dis[i].ss; } ll ans = 1; sort(dis + 1, dis + n + 1); for(int i = 1; i <= n; i++){ for(int j = i + 1; j <= n; j++){ if(dis[j].ff < dis[i].ss && dis[j].ss > dis[i].ss){ adj[i].push_back(j); adj[j].push_back(i); } } } for(int i = 1; i <= n; i++){ if(visited[i] == 0){ visited[i] = 1; ans *= dfs(i)*2; ans %= mod; } } cout<<ans<<endl; #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...