Submission #684668

#TimeUsernameProblemLanguageResultExecution timeMemory
684668LeonaRagingPlaninarenje (COCI18_planinarenje)C++14
48 / 160
6 ms724 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define db(val) "[" #val " = " << (val) << "] " const int maxn = 5e3 + 4; int n, m, t, mt[maxn], vis[maxn]; bool good[maxn], used[maxn]; vector<int> adj[maxn]; bool try_kuhn(int u) { if (vis[u] != t) vis[u] = t; else return 0; for (int v : adj[u]) if (!mt[v] || try_kuhn(mt[v])) { mt[v] = u; good[u] = 1; return 1; } return 0; } void dfs(int u) { if (vis[u]) return; vis[u] = 1; for (int v : adj[u]) if (mt[v]) { good[mt[v]] = 0; dfs(mt[v]); } } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> m; for (int i = 1, u, v; i <= m; i++) { cin >> u >> v; adj[u].pb(v); } for (int u = 1; u <= n; u++) for (int v : adj[u]) if (!mt[v]) { mt[v] = u; used[u] = good[u] = 1; break; } for (int u = 1; u <= n; u++) if (!used[u]) t++, try_kuhn(u); memset(vis, 0, sizeof vis); for (int u = 1; u <= n; u++) if (!used[u]) t++, dfs(u); for (int u = 1; u <= n; u++) cout << (good[u] ? "Slavko" : "Mirko") << '\n'; }
#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...
#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...