Submission #1065580

#TimeUsernameProblemLanguageResultExecution timeMemory
1065580ReLiceLongest Trip (IOI23_longesttrip)C++17
5 / 100
1016 ms1552 KiB
#include "longesttrip.h" #include <bits/stdc++.h> #define ll int #define pb push_back #define ins insert #define fr first #define sc second #define vll vector<ll> #define sz size() using namespace std; const ll N = 260; const ll inf = 1e9 + 7; vector<vll> g(N); ll d[N],p[N]; bool vis[N]; void dfs(ll v){ vis[v] = 1; for(auto i : g[v]){ if(d[i] != inf || (!vis[i] && d[i] < d[v] + 1))continue; p[i] = v; d[i] = d[v] + 1; dfs(i); } vis[v] = 0; } void cl(){ for(ll i=0;i<N;i++){ d[i] = inf; p[i] = i; } } pair<ll,ll> find(){ ll mx = -1, x = 0; for(ll i=0;i<N;i++){ if(d[i] != inf && d[i] > mx){ mx = d[i]; x = i; } } return {mx, x}; } vector<int> longest_trip(int n, int D){ ll i,j; for(i=0;i<n;i++) g[i].clear(); for(i=0;i<n;i++){ for(j=i+1;j<n;j++){ if(are_connected({i},{j})){ g[i].pb(j); g[j].pb(i); } } } ll rt = 0, ans = 0; for(i=0;i<n;i++){ cl(); d[i] = 0; dfs(i); auto [mx, x] = find(); if(mx < ans){ mx = ans; rt = i; } } cl(); d[rt] = 0; dfs(rt); auto [mx, x] = find(); vll v; while(x != rt){ v.pb(x); x = p[x]; } v.pb(rt); return v; }
#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...