Submission #1166506

#TimeUsernameProblemLanguageResultExecution timeMemory
1166506thinknoexitCijanobakterije (COCI21_cijanobakterije)C++20
70 / 70
23 ms14404 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 100100; int dp[2][N]; vector<int> adj[N]; bool vis[N]; int mx; void dfs(int v, int p = -1) { vis[v] = 1; for (auto& x : adj[v]) { if (x == p) continue; dfs(x, v); dp[1][v] = max(dp[1][v], dp[0][x] + 1); if (dp[0][v] < dp[1][v]) swap(dp[0][v], dp[1][v]); } mx = max(mx, dp[0][v] + dp[1][v] + 1); } int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, m; cin >> n >> m; while (m--) { int u, v; cin >> u >> v; adj[u].push_back(v); adj[v].push_back(u); } int ans = 0; for (int i = 1;i <= n;i++) { if (vis[i]) continue; mx = 0; dfs(i); ans += mx; } cout << ans << '\n'; return 0; }
#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...