Submission #1233363

#TimeUsernameProblemLanguageResultExecution timeMemory
1233363Muhammad_AneeqLongest Trip (IOI23_longesttrip)C++17
25 / 100
1082 ms700 KiB
#include <vector>
#include <set>
#include "longesttrip.h"
using namespace std;
int const MAXN=256;
vector<int>nei[MAXN]={};
vector<int>ans;
vector<int>cur;
bool stk[MAXN]={},vis[MAXN]={};
void dfs(int u,int p=-1)
{
    cur.push_back(u);
    bool w=0;
    stk[u]=1;
    for (auto i:nei[u])
    {
        if (stk[i])
            continue;
        w=1;
        dfs(i,u);
    }
    stk[u]=0;
    if (cur.size()>ans.size())
        ans=cur;
    cur.pop_back();
}
vector<int> sol(int N)
{
    vector<int>ans;
    for (int i=0;i<N;i++)
    {
        int q=i;
        vector<int>cur;
        while(!vis[q])
        {
            vis[q]=1;
            cur.push_back(q);
            for (auto i:nei[q])
            {
                if (!vis[i])
                {
                    q=i;
                    break;
                }
            }
        }
        if (cur.size()>ans.size())
            ans=cur;
    }
    return ans;
}
vector<int> longest_trip(int N, int D)
{
    ans={};
    cur={};
    for (int i=0;i<N;i++)
        nei[i]={},vis[i]=0;
    for (int i=0;i<N;i++)
        for (int j=i+1;j<N;j++)
            if (are_connected({i},{j}))
                nei[i].push_back(j),nei[j].push_back(i);
    if (D==1)
    {
        return sol(N);
    }
    for (int i=0;i<N;i++)
        dfs(i);
    return ans;
}
#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...