Submission #1069723

#TimeUsernameProblemLanguageResultExecution timeMemory
1069723Muhammad_AneeqLongest Trip (IOI23_longesttrip)C++17
0 / 100
1 ms344 KiB
#include <vector>
#include <set>
#include "longesttrip.h"
#include <bitset>
using namespace std;
int const MAXN=256;
vector<int>nei[MAXN]={};
vector<int>ans;
vector<int>cur;
bitset<MAXN>vis;
int root=0;
vector<int> dfs(int u)
{
	vis[u]=1;
	vector<int>mx,mx1;
	for (auto i:nei[u])
	{
		if (vis[i])
			continue;
		vector<int>z=dfs(i);
		if (z.size()>mx.size())
		{
			mx1=mx;
			mx=z;
		}
		else if (z.size()>mx1.size())
			mx1=z;
	}
	if (u==root)
	{
		vector<int>f=mx;
		f.push_back(u);
		for (auto i:mx1)
			f.push_back(i);
		if (f.size()>ans.size())
			ans=f;
		return f;
	}
	mx.push_back(u);
	return mx;
}
vector<int> longest_trip(int N, int D)
{
	ans.clear();
	cur.clear();
	for (int i=0;i<N;i++)
		nei[i].clear();
	vector<int>x,y;
	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);
		}
	for (int i=0;i<N;i++)
	{
		if (!vis[i])
		{
			root=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...