Submission #948886

#TimeUsernameProblemLanguageResultExecution timeMemory
948886vinCijanobakterije (COCI21_cijanobakterije)C++17
27 / 70
33 ms12888 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define mp make_pair #define ll long long #define pii pair<int, int> #define pll pair<ll, ll> const int INF = 2147483645; const int maxN = (int)1e5+5; const ll LLINF = LLONG_MAX; //const ll mod = 998244353; const ll mod = 1000000007; vector<int> adj[maxN]; int dist[maxN]; bool vis[maxN], avis[maxN]; void dfs(int s) { vis[s] = true; avis[s] = true; for (auto i: adj[s]) { if (vis[i]) continue; vis[i] = true; avis[i] = true; dist[i] = dist[s]+1; dfs(i); } } void solv() { int n, m, a, b; cin>>n>>m; for (int i=0;i<m;i++) { cin>>a>>b; adj[a].pb(b); adj[b].pb(a); } dfs(1); int mx = 0, start = 1; for (int i=1;i<=n;i++) { if (dist[i] > mx) { mx = dist[i]; start = i; } } memset(dist, 0, sizeof dist); memset(vis, 0, sizeof vis); dfs(start); mx = 0; for (int i=1;i<=n;i++) { mx = max(mx, dist[i]); } if (vis[2]) { for (int i=1;i<=n;i++) if (!avis[i]) mx++; cout<<mx+1<<'\n'; return; } memset(dist, 0, sizeof dist); memset(vis, 0, sizeof vis); dfs(2); int mx2 = 0; start = 2; for (int i=1;i<=n;i++) { if (dist[i] > mx2) { mx2 = dist[i]; start = i; } } memset(dist, 0, sizeof dist); memset(vis, 0, sizeof vis); dfs(start); mx2 = 0; for (int i=1;i<=n;i++) { mx2 = max(mx2, dist[i]); } for (int i=1;i<=n;i++) if (!avis[i]) mx++; cout<<mx+mx2+2<<'\n'; } int main() { ios::sync_with_stdio(0); cin.tie(0); int t=1; // cin>>t; while (t--) solv(); }
#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...