제출 #1051659

#제출 시각아이디문제언어결과실행 시간메모리
1051659mindiyakJobs (BOI24_jobs)C++14
0 / 100
748 ms1048576 KiB
#pragma GCC optimize("O1,O2,O3,Ofast,unroll-loops") #include <bits/stdc++.h> #include <string> #include <iostream> #include <cmath> #include <numeric> #include <stack> #include <queue> using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair<int, int> pi; typedef pair<ll, ll> pl; typedef pair<ld, ld> pd; typedef vector<int> vi; typedef vector<bool> vb; typedef vector<vector<int>> vvi; typedef vector<vector<pi>> vvpi; typedef vector<ld> vd; typedef vector<long long> vl; typedef vector<pi> vpi; typedef vector<pl> vpl; #define FOR(i, a, b) for (ll i = a; i < (b); i++) #define F0R(i, a) for (int i = 0; i < (a); i++) #define FORd(i, a, b) for (int i = (b)-1; i >= a; i--) #define F0Rd(i, a) for (int i = (a)-1; i >= 0; i--) #define trav(a, x) for (auto &a : x) #define uid(a, b) uniform_int_distribution<int>(a, b)(rng) #define len(x) (int)(x).size() #define mp make_pair #define pb push_back #define F first #define nl endl #define S second #define lb lower_bound #define ub upper_bound #define aint(x) x.begin(), x.end() #define raint(x) x.rbegin(), x.rend() #define ins insert const int MOD = 1e9+7; void init(string name) { freopen((name + ".in").c_str(), "r", stdin); freopen((name + ".out").c_str(), "w", stdout); } void fastIO() { ios_base::sync_with_stdio(0); cin.tie(0); } int N = 3e5+20; vector<set<int>> sons(N, set<int>()); queue<int> roots; vi poces(N,0); vi profit(N,0); ll ans = 0; int used = 0; void proc(int pos,ll money,set<int> pathset){ if(used)return; money += profit[pos]; pathset.insert(pos); // cout << pos << " " << money << " " << ans << endl; if(money > ans){ ans = money; for(int b:pathset){ // cout << b << " -> "; for(int a:sons[b]){ if(pathset.count(a) == 0 && poces[a] == 0){ // cout << a << " "; roots.push(a); poces[a] = 1; } } // cout << endl; // sons[b].clear(); } // cout << "ans - " << ans << " " << roots.size()<< endl; used = 1; return; } // cout << "C" << endl; for(int a:sons[pos]){ proc(a,money,pathset); } } void solve() { int n;ll s;cin >> n >> s; FOR(i,0,n){ int a,b;cin >> a >> b; b --; if(b == -1){ poces[i] = 1; roots.push(i); }else{ sons[b].insert(i); } profit[i] = a; } // FOR(i,0,n){ // cout << i << " -> "; // for(int a:sons[i])cout << a << " "; // cout << endl; // } while(!roots.empty()){ used = 0; // cout << "B" << endl; int a = roots.front();roots.pop(); set<int> pathset;vi path; proc(a,ans,pathset); // cout << "A" << endl; } cout << ans << endl; } int main() { fastIO(); // init("test"); int t = 1; // cin >> t; while (t--) solve(); return 0; }

컴파일 시 표준 에러 (stderr) 메시지

Main.cpp: In function 'void init(std::string)':
Main.cpp:44:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   44 |     freopen((name + ".in").c_str(), "r", stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Main.cpp:45:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   45 |     freopen((name + ".out").c_str(), "w", stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...