제출 #575524

#제출 시각아이디문제언어결과실행 시간메모리
575524definitelynotmeeRoller Coaster Railroad (IOI16_railroad)C++98
30 / 100
778 ms81208 KiB
#include<bits/stdc++.h> #include"railroad.h" #define mp make_pair #define mt make_tuple #define all(x) x.begin(), x.end() #define ff first #define ss second using namespace std; template <typename T> using matrix = vector<vector<T>>; typedef unsigned int uint; typedef unsigned long long ull; typedef long long ll; typedef pair<int,int> pii; typedef pair<ll,ll> pll; const ll INFL = (1LL<<62)-1; const int INF = (1<<30)-1; const double EPS = 1e-7; const int MOD = 1e9 + 7; const int RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count(); const int MAXN = 1e6+1; long long plan_roller_coaster(std::vector<int> s, std::vector<int> t) { int n = s.size(); set<int> vals; vals.insert(0); vals.insert(INF); for(int i = 0; i < n; i++){ vals.insert(s[i]); vals.insert(t[i]); } map<int,int> dic; for(int i : vals) dic[i] = dic.size(); int m = dic.rbegin()->ss; vector<int> check(m+1); vector<int> hasedge(m+2); vector<int> delta(m+2); matrix<int> g(m+1); for(int i = 0; i < n; i++){ int u = dic[s[i]], v = dic[t[i]]; delta[u]--; delta[v]++; g[u].push_back(v); } int cur = 1; for(int i = 0; i < m; i++){ cur+=delta[i]; if(cur){ g[i].push_back(i+1); } } auto dfs =[&](int id, auto dfs)->void{ check[id] = 1; for(int i : g[id]){ if(!check[i]){ dfs(i,dfs); } } }; dfs(0,dfs); return accumulate(all(check),0) != m+1; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...