比赛 CSP2022提高组 评测结果 AAAWWWWWAAAWWWEEEEEE
题目名称 假期计划 最终得分 30
用户昵称 康尚诚 运行时间 1.362 s
代码语言 C++ 内存使用 2.34 MiB
提交时间 2022-10-30 11:57:10
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
const int N=2510,M=10010;
struct node
{
	int to;int pre;
}edge[M];
int lst[N],cnt=0;
void addedge(int from,int to)
{
	cnt++;
	edge[cnt].to=to;
	edge[cnt].pre=lst[from];
	lst[from]=cnt;
}
ull v[N],maxv=0;
bool vis[N];
void dfs(ull val,int num,int now)//当前总价值,已经走的点数和当前位于的点
{
//	cout<<num<<' '<<now<<endl;
	if(num==5)
	{
		if(now==1)
			maxv=max(maxv,val);
		return;
	}
	if(num!=0&&now==1) return;
	for(int i=lst[now];i!=0;i=edge[i].pre)
	{
		int u=edge[i].to;
		if(!vis[u])
		{
			vis[u]=1;
			dfs(val+v[u],num+1,u);
			vis[u]=0;
		}
	}
	return;
}
int main()
{
	freopen("csp2022_holiday.in","r",stdin);
	freopen("csp2022_holiday.out","w",stdout);
	int n,m,k;cin>>n>>m>>k;
	for(int i=2;i<=n;i++)
	{
		cin>>v[i];
	}
	int u,v;
	for(int i=1;i<=m;i++)
	{
		cin>>u>>v;
		addedge(u,v);
		addedge(v,u);
	}
	dfs(0,0,1);
	cout<<maxv;
}