Submission #1233350

#TimeUsernameProblemLanguageResultExecution timeMemory
1233350Muhammad_Aneeq가장 긴 여행 (IOI23_longesttrip)C++17
40 / 100
394 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 vis[MAXN]={};
void dfs(int u,int p=-1)
{
	vis[u]=1;
	cur.push_back(u);
	bool w=0;
	for (auto i:nei[u])
	{
		if (vis[i])
			continue;
		w=1;
		dfs(i,u);
	}
	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++)
	{
		for (int j=0;j<N;j++)
			vis[j]=0;
		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...