Submission #1270171

#TimeUsernameProblemLanguageResultExecution timeMemory
1270171quangminh412Bosses (BOI16_bosses)C++17
100 / 100
916 ms1328 KiB
/* Ben Watson Quang Minh MasterDDDDD */ #include <bits/stdc++.h> using namespace std; #define ll long long const string name = "sharks"; void solve(); signed main() { if (fopen((name + ".inp").c_str(), "r")) { freopen((name + ".inp").c_str(), "r", stdin); freopen((name + ".out").c_str(), "w", stdout); } ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); return 0; } // main program const ll oo = 0x3f3f3f3f3f3f3f3f; const int maxn = 5001; vector<int> leaders[maxn], childs[maxn], adj[maxn]; int n; int vis[maxn]; ll val[maxn]; void DFS(int u) { ll sum = 0; for (int v : adj[u]) { DFS(v); sum += val[v]; } val[u] = sum + 1; } ll compute(int root) { for (int i = 1; i <= n; i++) childs[i].clear(); for (int i = 1; i <= n; i++) { vis[i] = 0; val[i] = 0; if (i == root) continue; for (int x : leaders[i]) childs[x].push_back(i); } for (int i = 1; i <= n; i++) adj[i].clear(); queue<int> q; q.push(root); vis[root] = 1; while (!q.empty()) { int u = q.front(); q.pop(); for (int v : childs[u]) { if (vis[v] == 1) continue; vis[v] = 1; adj[u].push_back(v); q.push(v); } } DFS(root); ll res = 0; for (int i = 1; i <= n; i++) if (vis[i] == 0) return oo; else res += val[i]; return res; } void solve() { cin >> n; for (int i = 1; i <= n; i++) { int k; cin >> k; for (int j = 0; j < k; j++) { int x; cin >> x; leaders[i].push_back(x); } } ll res = oo; for (int i = 1; i <= n; i++) res = min(res, compute(i)); cout << res << '\n'; }

Compilation message (stderr)

bosses.cpp: In function 'int main()':
bosses.cpp:19:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |         freopen((name + ".inp").c_str(), "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bosses.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         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...