This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "longesttrip.h"
#include<bits/stdc++.h>
using namespace std;
using namespace std;
vector<int>sub1(int n){
vector<int>ans;
for(int i=0;i<n;i++) ans.push_back(i);
return ans;
}
int n;
vector<vector<int>>v;
vector<int>dp,a,vis;
void dfs(int x){
int s=x;
vis[x]=1;
for(int z:v[x]){
if(vis[z]!=1){
if(vis[z]==0) dfs(z);
if(dp[z]+1>dp[x] && dp[z]>0) s=z,dp[x]=dp[z]+1;
}
}
vis[x]=2;
a[x]=s;
}
vector<int>f(int x,int y){
dp.assign(n,0);
a.resize(n);
vis.assign(n,0);
dp[y]=1;
dfs(x);
vector<int>ans;
if(dp[x]==0) return ans;
while(x!=y){
ans.push_back(x);
x=a[x];
}
ans.push_back(y);
return ans;
}
vector<int> longest_trip(int N, int D){
if(D==3) return sub1(N);
n=N;
v.assign(N,vector<int>(0));
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
if(are_connected({i},{j})){
v[i].push_back(j);
v[j].push_back(i);
}
}
}
vector<int>ans;
for(int i=0;i<N;i++){
for(int j=i+1;j<N;j++){
vector<int>b=f(i,j);
if(b.size()>ans.size()) swap(b,ans);
}
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |