on
백준 1325 - 효율적인 해킹
백준 1325 - 효율적인 해킹
#pragma GCC target("avx,avx2,fma") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #include using namespace std; int n, m; int num; int discovered[10001]; bool finished[10001]; vector graph[10001]; vector ans[10001]; int dfs(int cur, int par) { int ret = 1; discovered[cur] = ++num; for (int i: graph[cur]) { if (i == par) continue; if (discovered[i] == -1) ret += dfs(i, cur); } finished[cur] = true; return ret; } void solve() { cin >> n >> m; for (int i = 0; i < m; ++i) { int a, b; cin >> a >> b; graph[b].push_back(a); } for (int i = 1; i <= n; ++i) { sort(graph[i].begin(), graph[i].end()); graph[i].erase(unique(graph[i].begin(), graph[i].end()), graph[i].end()); } for (int i = 1; i <= n; ++i) { num = 0; memset(finished, 0, sizeof finished); memset(discovered, -1, sizeof discovered); ans[dfs(i, -1)].push_back(i); } for (int i = 10000; i >= 1; --i) { if (ans[i].size()) { sort(ans[i].begin(), ans[i].end()); for (int j: ans[i]) cout << j << ' '; return; } } } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); solve(); }
from http://nicotina04.tistory.com/177 by ccl(A) rewrite - 2021-10-27 01:26:33